读文件

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 模式为追加写入