python文件处理
打开文件,当前目录
help(file)
方法
.close() 关闭文件。关闭后文件不能再进行读写操作。
.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
.next() 返回文件下一行
.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有
.readline([size]) 读取整行,包括 "\n" 字符。
.readlines([sizehint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。
.seek(offset[, whence]) 设置文件当前位置
.tell() 返回文件当前位置
.truncate([size]) 截取文件,截取的字节通过size指定,默认为当前文件位置。
.write(str) 将字符串写入文件,没有返回值。
.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
数据类型描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.encoding 文件编码
file.errors
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.newlines
file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
文件写入
file('test.txt','w')
r 只读模式,文件存在时才行,默认模式
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式
r+ 打开一个文件用于读写。文件指针将会放在文件的开头
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
w 写入,新创建test.txt文件, 有文件时会覆盖文件,
a 追加
+ 读和写
>>> file('test.txt','w') <open file 'test.txt', mode 'w' at 0x0000000002E24150> ##文件存在内存中 >>> f = file('test.txt','w') >>> f.write("first test") ##写入内容 >>> f.write("aaa") >>>f.flush() ##刷新写入,保存在硬盘 >>>f.close() ##文件退出,保存在硬盘
退出后无法f.write(),
如果再 以 w 模式打开
f = file('test.txt','w') f.write("add test2") f.close() 原文件内容会被覆盖, 所以追加内容用模式 f = file('test.txt','a')
将列表写入
f = open("test.txt", "wb") f.writelines(['first test\n', '123\n', 'aaa']) f.close()
打开文件,与文件属性
open
#!/usr/bin/python # -*- coding: UTF-8 -*- # 打开一个文件 f = open("f.txt", "wb") print "文件名: ", f.name print "是否已关闭 : ", f.closed print "访问模式 : ", f.mode print "末尾是否强制加空格 : ", f.softspace
condecs 避免格式问题打开文件乱码(推荐)
>>> import codecs >>> f = codecs.open('test.txt','a','utf-8') >>> f.write('test') >>> f.close()
读文件
f.readline() 读行
>>>f = file('test.txt') ###不带模式,默认是 r 只读模式 >>>f.read() 读所有内容,打印所有内容 f.read() 之后 执行 f.readline() 会显示空值,因为f.read() 后指针默认是在跳到内容最末尾, >>>f.tell() ##可以查看指针位置, >>>f.seek(0) ##指针跳到0个字符,即行首,指定跳到那个位置 >>>f.readline() ###读出所有内容,打印第一行,再执行打印第二行 >>>f.seek(0) >>>f.readlines() ##读取所有行并返回列表 >>>['first test\n', '123\n', 'aaa']
f.xreadlines() ##对于很大的文件时使用,读单行,速度快占内存小
with ...as 语法使用,enumerate() 使用
import codecs with codecs open('test.txt','rb') as f: print (f.read()) for line, value in enumerate(f): ##每行都打印行号 print(line, value) if line == 4-1: ##打印行号 print (value)
with ...as避免忘记f.close(),又可以避免文件乱码
linecache 取某行内容
import linecache conut = linecache.getline(test.txt,4) print(count)
文件内容替换
for line in fileinput.input("filepath",inplace=1):
line = line.replace("oldtext","newtext")
print line, ###不写,文件可能被清空
inplace=0 默认=0 只打印修改,=1 修改文件
backup= ' .bak' 修改前备份源文件,添加.bak后缀
posted on 2017-10-28 00:33 song-liang 阅读(175) 评论(0) 收藏 举报