1、打开文件
函数open将文件名作为唯一必不可少的参数,并返回一个文件对象。
如果要写入文件,必须通过指定模式mode参数来显式地指出,默认模式为'rt'。
值 | 描述 |
'r' | 读取模式(默认值) |
'w' | 写入模式 |
'x' | 独占写入模式 |
'a' | 附加模式 |
'b' | 二进制模式(与其他模式结合使用,如rb,wb) |
't' | 文本模式(默认值,与其他模式结合使用) |
'+' | 读写模式(与其他模式结合使用) |
文件模式说明:(1)写入模式能够写入文件,并在文件不存在时创建它。
(2)独占写入模式,在文件已存在时引发FileExistsError异常。
(3)在写入模式下打开文件时,既有内容将被删除(截断),并从文件开头处开始写入。
(4)要在既有文件末尾继续写入,可使用附加模式。
(5)'+'可与其他任何模式结合起来使用,表示即可读取也可写入。
(6)'r+'和'w+'的区别:后者会截断文件,前者不会。
要指定其他编码和Unicode错误处理策略,可使用关键字参数encoding和errors。
通常Python使用通用换行模式,通过关键字参数newline设置为空字符串。修改newline的值能修改相应的行尾换行字符。
2、文件的基本方法
流类似于文件对象,支持文件对象的一些方法。
三个标准流:(1)sys.stdin,标准输入流
(2)sys.stdout,标准输出流
(3)sys.err,标准错误流
2.1 读取和写入
通过f.write来写入数据
通过f.read来读取数据
2.2 使用管道重定向
管道(|)将一个命令的标准输出链接到下一个命令的标准输入。
随机存取
方法seek(offset[,whence])将当前位置(执行读取或写入的位置)移到offset和whence指定的地方。
方法tell。
2.3 读取和写入行
方法readline(n),指定最多读取n个参数,不指定时读取一行并返回它。
方法readlines(),读取文件中的所有行,并以列表的方式返回它们。
方法writelines(),接受一个字符串列表(任何序列或可迭代对象),并将这些字符串都写入到文件(或流)中,但是写入时不会添加换行符,因为必须自行添加。
2.4 关闭文件
在try/finally语句中调用close
上下文管理器
with语句能够打开文件并将其赋给一个变量,在语句体中,将数据处理,到达该语句末尾时,将自动关闭文件,即便出现异常亦如此。
2.5 文件缓冲区
open函数种的第三个可选参数buffering控制着文件的缓冲。
如果参数是0,I/O操作就是无缓冲的,直接将数据写在硬盘上;如果参数是1,I/O操作就是有缓冲的,数据先写到内存里,只有使用flush函数或者close函数才会将数据更新到硬盘。
如果参数为大于1的数字则代表缓冲区的大小(单位是字节),-1(或则是任何负数)代表使用默认缓冲区的大小。