Python文件讀寫–錯誤一

在學習python的文件讀寫操作的時候,我遇到了一點麻煩事,覺得可以記錄下來,先上代碼吧。

with open('test.txt') as file:
    file.write('test')
    print(file.read())

我的目的很簡單,就是以默認的a模式打開文件,並在文件末尾寫入’test’,然後把最新的文件讀出來,可誰知當我運行的時候,竟然報錯。認真查閱書本,才想起來a模式是不支持read()的,然後修改為a+模式,代碼如下:

with open('test.txt','a+') as file:
    file.write('test')
    print(file.read())

本以為又要成功了,誰知內容是寫進去了不錯,但是輸出是空的,就是文件讀不出來。問了高人後,又是一個細節暴露了出來。原來這裡牽涉到讀寫模式對文件中指針位置的影響,大家可以到網上搜一下,這裡我只講a+模式。a+模式以追加的模式打開一個文件用於讀寫。如果文件存在,則打開文件,將文件指針定位在文件尾,新寫入的內容在原有內容的後面;如果文件不存在,則創建一個新文件用於讀寫。read()是從光標處向後讀,也就是說read()之前,光標已經到了文件的末尾,因此也就讀不出來內容了。這裡我們要用到seek(0)來把光標重置到文件開頭。最終代碼如下:

with open('test.txt','a+') as file:
    file.write('test')
    file.seek(0)
    print(file.read())

終於正常了,哈哈,希望自己可以永遠記住這幾點。