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'
模式打開:code
>>> 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 模式爲追加寫入