五、文件操作
一、文件的打开模式和编码
1)编码
字符型的文件会先编码然后再存储。所以读取这些文件的时候就需要解码。
2)打开模式
文件的打开模式有只读(r),只写(w),追加(a),以及二进制模式和二进制加下的只读(rb),只写(wb),追加(ab)。
只读:默认模式,文件必须存在,不存在则抛出异常
只写:不可读;不存在则创建;存在则清空内容】
追加:不可读;不存在则创建;存在则只追加内容】
二进制下的作用一样,只是读出或者写入的是看不懂得bytes。
3)打开文件
(1)f = open(filepath,mode,encoding)
文件路径可以是相对的,也可以是绝对的。只要找得到你要读或者写的文件进行。编码格式对应,不乱码就行。
f = open('../Day07/file.txt','r',encoding='utf-8')
(2)with open(filepath,mode,encoding) as f:
跟上面的一样的,不过是形式不一样。
with open('../Day07/file.txt') as f: f.close()
二、文件的读
1)read():读出文件中的所有内容;如果读取很大的文件的时候尽量不要使用,因为内存会不足。
可以传入一个整数。如果传入一个十,二进制打开的时候表示读取十个字节,非二进制打开表示读取十个字符。
f = open('file.txt','r',encoding='utf-8') print(f.read()) f.close()
2)readline():可以传入一个参数,表示最多返回及格字符。(非二进制打开是字符,否则是字节),不传参数默认读出一整行。
f = open('file.txt','r',encoding='utf-8') print(f.readline()) f.close()
3)readlines():读出文件内所有的行。并把每一行组织在列表了返回,每一行就是一个元素。
f = open('file.txt','r',encoding='utf-8') print(f.readlines()) f.close()
注意,以上三种方法不论是哪一种,都把句子头尾的换行符和空格,占位符什么的都读除了,如果不进行必要的处理可能会发生意想不到的错误。
三、文件的写
1)write():只能传入字符串类型的数据。否则报错。
str = 'abcd' f = open('file.txt','r',encoding='utf-8') f.write(str)
2)writelines():参数是序列,例如列表;将自动迭代序列内容并写入文件。注意,除非序列内用能使文本换行的内容否则不会换行。
lis = ['acd','acd'] f = open('file.txt','w',encoding='utf-8') f.writelines(lis)
四、其他操作
1、writable()
判断文件是否可写,返回True或者False。
2、readable()
返回文件是否可读,返回True或者False。
3、seek(offset,whence)
offset :开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起
4、seekable()
返回在文件中是否可以移动光标。