with open('filename.txt', 'wb', encoding='utf-8') as file:
# some code
模式
file_mode.PNG
open('filename.txt')
躏率,默認(rèn)情況下python以只讀疼鸟,文本模式打開文件,編碼取決于系統(tǒng)的默認(rèn)編碼磁椒。
# 查看系統(tǒng)默認(rèn)編碼
In [71]: import sys
In [72]: sys.getdefaultencoding()
Out[72]: 'utf-8'
如果要打開非文本文件趟章,比如圖片杏糙,必須加上 b
標(biāo)識
換行
對于以文本模式打開的文件,讀取時蚓土,python會自動將系統(tǒng)的換行符(Unix: \n
, Windows: \r\n
) 轉(zhuǎn)換為 \n
宏侍,寫入時也會自動轉(zhuǎn)換。
with 關(guān)鍵字
打開文件時建議使用 with
語句蜀漆,這樣谅河,with
代碼塊結(jié)束時,python會自動關(guān)閉文件确丢,即使發(fā)生異常绷耍。否則,需要手動執(zhí)行 file.close()
確保將緩沖區(qū)的內(nèi)容寫入到硬盤鲜侥。
文件對象的方法
-
file.read([size])
: size 忽略時讀取整個文件的內(nèi)容褂始;文件讀取完畢時返回空字符''
-
file.readline()
讀取一行,保留\n
描函,以便區(qū)分空白行\n
或 文件結(jié)尾''
-
file.readlines()
返回一個列表 -
file.write('some text')
返回寫入的字符數(shù)或字節(jié)數(shù)
# 打印每一行
with open('file.txt') as file:
for line in file:
print(line, end='')
位置
-
file.tell()
返回當(dāng)前文件讀取到的位置(在二進(jìn)制模式下的單位為字節(jié)) -
file.seek(offset, from_what)
修改當(dāng)前文件讀取到的位置
在二進(jìn)制模式下崎苗,from_what
有3個可選值:
- 0: 文件開頭
- 1:文件當(dāng)前讀取到的位置
- 2: 文件結(jié)尾
在文本模式下,from_what 的值只能時是0 舀寓,offset 的值只能是 file.tell()
或 0