使用r+、w+、a+ 三種模式開啟檔案時顯示的是空白內容
阿新 • • 發佈:2020-07-06
問題:用r+、w+、a+三種模式的其中一種開啟有內容的檔案,程式碼執行後結果顯示空白
示例程式碼:
with open('filename','r+') as f: f.write('tar -xvf filename') print(f.read()) ================================ 執行結果是:空白 開啟檔案檢視,有內容
最終的執行結果是輸出空,為什麼
網上搜了一下說:a+模式開啟檔案指標在檔案結尾處,所以直接讀是讀不到內容的
問題是指標在檔案結尾處,讀取檔案內容是從指標出開始讀取的,而指標在檔案末尾,讀取到的當然是空的
解決方法:
讀取檔案前把指標指向位置移到檔案開頭就行
用tell()方法可以檢視檔案指標的位置,當tell()返回的是0,不是其他數字,就代表指標位置在檔案開頭,此時可以讀取到檔案全部內容
用seek()方法可以把指標位置移到到檔案開頭(0表示檔案開頭;1表示當前位置;2表示檔案末尾)
解決程式碼:
# with語句開啟檔案 with open('filename','a+') as f: # 給檔案寫入內容 f.write('tar -xvf filename') # 檢視檔案指標位置 print(f.tell()) # 把指標位置移到開頭 f.seek(0) # 讀取檔案內容 print(f.read())