1.获取文件操作对象
读写文件就是请求操作系统打开一个文件对象,然后通过系统提供的接口读写数据。
f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
上述代码获取了一个文件对象f,注意操作结束后,要f.close()关闭文件
file:文件的路径
mode:文件打开模式
常见的模式有
模式
描述
b
二进制模式
r
以只读方式打开,指针放在文件开头
r+
读写方式打开,指针放在文件开头
rb
已二进制打开一个文件,只读
rb+
二进制打开一个文件,读写
w
写的方式打开一个文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件
w+
读写的方式打开一个文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件
wb+
读写的方式打开一个二进制文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件
a
追加的方式打开文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件
a+
追加的方式打开文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件
ab+
追加的方式打开二进制文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件
buffering:设置缓冲
encoding:编码格式
errors:报错级别
newline:区分换行符
closefd:传入file参数
2.写文件
a. f.write(str1) 将字符串写入文件,返回的是写入的字符长度
b.f.writelines(list1) 写入一个字符串列表
写文件时,内容会先到缓冲区,等待系统空闲或者close时才会写入到文件中,推荐with的写法
l1 = [u'测试\n', 'test\n'] #需要添加换行符
f1.writelines(l1)
3.读文件
a.f.read(size) 读指定字节的内容,默认读取文件所有内容。注意读取到的指是str类型,如果需要运算要先进行转换。
b. f.readline() 读取一行,包括换行符
c. f.readlines(sizeint) 读取所有行,并且返回列表。若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区
4.其他
f.tell() 返回指针当前位置
f.seek(offset[,whence]) 移动指针到指定位置,
offset 偏移量,可以是负,代表从后向前移动
whence 偏移相对位置,0 开头位置 1 当前位置 2 文件结尾位置
例如 seek(x, 0) 从开始位置位移x
seek(x, 1) 从当前位置向后位移x
seek(-x, 2) 从结尾位置向前位移x
f.truncate(size) (存疑)从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
5.关于异常
如果文件不存在,open()函数会抛出一个IOError异常错误。
其他异常待补充