1

读文件

try:
    f = open('/path/to/file', 'r')
    print(f.read())
except IOError as e:
    print('except:', e)
finally:
    if f:
        f.close()

使用with语句会自动调用close()方法:

with open('/path/to/file', 'r') as f:
    print(f.read())

常用的读方法:

  • read() 一次性读取文件的全部内容;
  • read(size) 每次读取size个字节的内容;
  • readline() 每次读取一行内容;
  • readlines() 一次读取所有内容并按行返回list

readlines() 使用示例:

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉

类文件对象

含有read()方法的对象,在Python中统称为file-like Object。

文件、字节流、网络流、自定义流等都是 file-like Object。

读取二进制文件

图片、视频等都属于二进制文件,需要用'rb'模式打开:

>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节

指定读取的字符编码

>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk', errors='ignore')
>>> f.read()
'测试'

写文件

写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才把没有写入的数据全部写入磁盘。所以建议使用 with 方式:

with open('/path/to/file', 'w') as f:
    f.write('Hello, world!')
w 模式为覆盖写入
a 模式为追加写入

小伍
139 声望4 粉丝