簡體   English   中英

如何從以“a+”模式打開的文件中讀取?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM