文件交互"/>
Python--文件交互
Python–文件交互
打开文件
打开文件,可使用自动导入的io模块中的**open()**函数
io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)以文件名作为必需参数,返回一个文件对象- file 文件名- mode 指定操作模式- encoding 指定解码方式- newline 指定换行符
-
mode参数的常见取值
mode = 'r' 读取模式(默认) 可读取文件 mode = 'w' 写入模式 从文件开头写入文件,文件不存在时自动创建 mode = 'x' 独占写入模式 创建文件并写入,如果文件已存在,引发FileExistsError异常 mode = 'a' 附加模式 从文件末尾开始写入文件mode = 'b' 二进制模式 将文件视为二进制数据 mode = 't' 文本模式(默认) 将文件视为Unicode文本,默认使用UTF-8进行编码和解码 mode = '+' 读写模式 'r+' 'w+',既可读也可写,后者截断文件,前者不会
其中6-8于1-4搭配使用,如‘rb’表示读取二进制模式
-
‘rt’模式下的自动转换换行符:
默认情况下,以‘\n’作为换行符。读取时将自动替换其他换行符(‘\r’或‘\r\n’),写入时把‘\n’替换为其他换行符
-
通用换行模式
在这种模式下,python能够识别所有合法的换行符,如\n \r \r\n
如果要使用这种模式,同时禁止自动转换,可将newline参数设置为空字符串‘’,这样在读取和写入的过程中换行符不会发生转换。
此外,如果只指定\r为换行符,可将newline参数设置为‘\r’,这样读取时不会将换行符\r进行转换,但写入时会将\n转换为\r
操作文件的基本方法
读取
-
f.read() 从 f f f文件开头读取文件,可指定字符个数
f.read() 从文件开头读取整个文件,保存到一个字符串中 f.read(4) 从文件开头读取四个字符
-
f.readline() 从文件开头读取文件的一行
f.readline() 从文件开头开始,读取一整行 f.realine(5) 读取该行的前5个字符
-
f.readlines() 读取文件的所有行
f.readlines() 读取文件的所有行,并以列表的形式返回它,列表的每一个元素为一行
写入
-
f.write()
f.write(string) 将字符串写到文件中既有内容的后面
-
f.writelines()
f.writelines(iteration) 接受一个字符串列表(可以是任何序列或可迭代对象),将这些字符串都写入到文件中,写入时不会自动添加换行符,需要手动设置
关闭文件
-
f.close()
f.close() 关闭文件f,保证写入缓冲区的数据都写入到文件中
在文件写入过程中,python可能会缓冲你的数据,将数据暂时存储到某个位置,以提高效率,如果文件未正常关闭,数据可能根本不会写入到文件中
-
使用with语句,语句块执行完毕后,会自动关闭文件(允许你使用上下文管理器)
with open('file_name') as f:pass
迭代文件内容
每次一个字符
with open(filenam) as f:while True:char = f.read(1)if not char:breakprocess(char)
每次一行
with open(filenam) as f:while True:line = f.readline()if not line:breakprocess(line)
读取所有内容
with open(filenam) as f:for char in f.read():process(char)with open(filenam) as f:for line in f.readlines():process(line)
使用fileinput实现延迟行迭代
大型文件的读取中,如果一次读取整个文件,会占用太多的内存,此时可以循环分段迭代,也可适应延迟行迭代的方式
延迟行迭代:只读取实际需要的文本部分
import fileinputfor line in fileinput.input(filename):process(line)
文件迭代器
文件实际上是可以迭代的
with open(filename) as f:for line in f:process(line)
返回若干个io.TextIOWrapper对象
io.TextIOWrapper是一个编码和解码的文本处理层,待了解*
更多推荐
Python--文件交互
发布评论