通過(guò)w的打開(kāi)方式打開(kāi)文件,會(huì)清空文件的內(nèi)容,這在很多場(chǎng)景下是不合適的,比如寫(xiě)系統(tǒng)日志的時(shí)候,需要累積隨時(shí)間推移的所有數(shù)據(jù)。
Python提供文件追加內(nèi)容的打開(kāi)模式,可以往文件尾部添加內(nèi)容,又不清空文件原有的內(nèi)容。
模式 |
描述 |
a |
打開(kāi)一個(gè)文件并追加內(nèi)容,會(huì)往文件尾部添加內(nèi)容 |
ab |
以二進(jìn)制格式打開(kāi)一個(gè)文件并追加內(nèi)容,會(huì)往文件尾部添加內(nèi)容 |
a+ |
打開(kāi)一個(gè)文件并使用追加進(jìn)行讀寫(xiě) |
f = open('test.txt', 'a') f.write('Hello Everyone\n') f.close()
使用a的打開(kāi)方式打開(kāi)文件,文件游標(biāo)默認(rèn)是在文件的尾部,因此,可以便捷的往文件尾部添加內(nèi)容,除此以外,文件對(duì)象還提供seek()方法,可以移動(dòng)文件的游標(biāo)位置,它接受一個(gè)參數(shù),表示文件的位置,0:文件首部,1:當(dāng)前位置,2:文件尾部,通過(guò)seek()可以把文件游標(biāo)移動(dòng)到文件首部但不刪除文件的內(nèi)容。
?f = open('test.txt', 'a+') content = f.readlines() print(content) # ==> [] f.seek(0) content = f.readlines() print(content) # ==> ['Hello World\n', 'Hello Python\n', 'Hello Imooc\n']
第一次print(content)的時(shí)候,由于文件游標(biāo)在文件的尾部,所以readlines()讀取不到任何數(shù)據(jù),打印了空的結(jié)果,第二次print(content)的時(shí)候,由于通過(guò)seek(0),文件游標(biāo)移動(dòng)到了文件的首部,因此readlines()就返回了文件所有的內(nèi)容。
假設(shè)test.txt文件有以下內(nèi)容:
Hello World Hello Python Hello Imooc
請(qǐng)將文件的內(nèi)容重復(fù)寫(xiě)一份追加到文件的尾部。
請(qǐng)同學(xué)在本地編寫(xiě)代碼練習(xí)
參考答案:
f = open('test.txt', 'a+') f.seek(0) content = f.readlines() f.seek(2) for line in content: f.write(line) f.close()
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)