IO编程
文件的读写
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不
允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),
然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
读文件
要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符
1 | f = open('/Users/michael/test.txt', 'r') #找到文件位置 打开文件 |
问题:查找文件不存在 报错影响后续程序执行
解决1
2
3
4
5
6try:
f = open('/Users/michael/test.txt', 'r')
f.read()
finally:
if f:
f.close()
python内置with方法可以自动关闭文件1
2with open('C:/Users/WANGJIANG/Desktop/text.txt', 'r') as f:
print(f.read())
问题:read()方法一次性读取文件全部内容,文件过大读取速度过大 没不要全部读取
read(size) 规定每次读取信息长度
readline() 每次读取一行内容
readlines() 一次读取所有内容并按行返回list
1 | for line in f.readlines(): |
读取二进制文件
之前读取的文件都是文本文件,并且是UTF-8编码
读取图片视频这些二进制文件1
2f = open('/Users/michael/test.jpg', 'rb')
f.read() #输出十六进制的编码文件
字符编码
要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件
1 | f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore') |
errors 表示如果文件编码出现错误 直接忽略
写文件
调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件
1 | f = open('/Users/michael/test.txt', 'w') |
忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了
with的写法1
2with open('/Users/michael/test.txt', 'w') as f: #自动关闭文件 保证文件写入成功
f.write('Hello, world!')
要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码
小结
在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯