[英]How to read from file opened in "a+" mode?
根據定義,“a+”模式打開文件以進行追加和讀取。 追加有效,但閱讀的方法是什么? 我做了一些搜索,但在任何地方都找不到澄清。
f=open("myfile.txt","a+")
print (f.read())
試過這個,它打印空白。
使用f.seek()
將文件偏移設置為文件開頭。
注意:在 Python 2.7 之前,有一個 bug 會導致某些操作系統不會讓文件位置始終指向文件末尾。 這可能會導致某些用戶使用您的原始代碼。 例如,在 CentOS 6 上,您的代碼會按照您的意願工作,但不會像它應該的那樣工作。
f = open("myfile.txt","a+")
f.seek(0)
print f.read()
當您使用f=open(myfile.txt,"a+")
打開文件時,該文件可以被讀取和寫入。
默認情況下,文件句柄指向文件的開頭,
這可以由f.tell()
確定,它將是0L
。
In [76]: f=open("myfile.txt","a+")
In [77]: f.tell()
Out[77]: 0L
In [78]: f.read()
Out[78]: '1,2\n3,4\n'
但是, f.write
會在寫入之前將指針移動到最后一行。
模式 r+ 讀取和寫入 從文件開頭開始 r 只讀 從文件開頭開始 a+ 讀取/追加。 通過寫入文件末尾來保留文件內容
祝你好運! 伊莎貝爾·魯伊斯
依賴於操作系統的較新版本的 Python 中仍然存在一些怪癖,它們是由於 stdio 中 fopen() 函數的實現存在差異。
Linux 的man fopen
:
a+ - 打開以供讀取和追加(在文件末尾寫入)。 如果文件不存在,則創建該文件。 讀取的初始文件位置在文件的開頭,但輸出總是附加到文件的末尾。
操作系統:
``a+'' - 可讀寫。 如果文件不存在,則創建該文件。 流位於文件的末尾。 對文件的后續寫入將始終以當前的文件結尾結束,而不管是否有任何中間 fseek(3) 或類似內容。
MSDN 並沒有真正說明指針最初設置的位置,只是它在寫入時移動到末尾。
當使用“a”或“a+”訪問類型打開文件時,所有寫操作都發生在文件末尾。 文件指針可以使用 fseek 或 rewind 重新定位,但在執行任何寫操作之前總是移回文件末尾。 因此,現有數據不能被覆蓋。
使用.open
.tell
在不同系統上使用 Python 2.7.x 和 3k 復制差異非常簡單
通過操作系統處理任何事情時,采取預防措施更安全,例如使用顯式.seek(0)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.