Python 讀寫文件

讀文件

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 模式爲追加寫入
相關文章
相關標籤/搜索