1. 程式人生 > 實用技巧 >使用r+、w+、a+ 三種模式開啟檔案時顯示的是空白內容

使用r+、w+、a+ 三種模式開啟檔案時顯示的是空白內容

問題:用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())