IO编程

作者 新城 日期 2017-08-29
IO编程

IO编程

文件的读写
读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不
允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),
然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

读文件

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符

1
2
3
f = open('/Users/michael/test.txt', 'r')    #找到文件位置 打开文件
f.read() #读取文件内容
f.close() #关闭文件

问题:查找文件不存在 报错影响后续程序执行
解决

1
2
3
4
5
6
try:
f = open('/Users/michael/test.txt', 'r')
f.read()
finally:
if f:
f.close()

python内置with方法可以自动关闭文件

1
2
with open('C:/Users/WANGJIANG/Desktop/text.txt', 'r') as f:
print(f.read())

问题:read()方法一次性读取文件全部内容,文件过大读取速度过大 没不要全部读取

read(size) 规定每次读取信息长度

readline() 每次读取一行内容

readlines() 一次读取所有内容并按行返回list

1
2
for line in f.readlines():
print(line.strip())

读取二进制文件
之前读取的文件都是文本文件,并且是UTF-8编码

读取图片视频这些二进制文件

1
2
f = 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
2
3
f = open('/Users/michael/test.txt', 'w')
f.write('Hello, world!')
f.close()

忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了

with的写法

1
2
with open('/Users/michael/test.txt', 'w') as f:     #自动关闭文件  保证文件写入成功
f.write('Hello, world!')

要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码

小结
在Python中,文件读写是通过open()函数打开的文件对象完成的。使用with语句操作文件IO是个好习惯