在學習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())
終於正常了,哈哈,希望自己可以永遠記住這幾點。