簡體   English   中英

Python - tempfile.TemporaryFile無法讀取; 為什么?

[英]Python - tempfile.TemporaryFile cannot be read; why?

TemporaryFile官方文檔如下:

mode參數默認為'w + b',因此可以在不關閉的情況下讀取和寫入創建的文件。

但是,以下代碼無法按預期工作:

import tempfile

def play_with_fd():
    with tempfile.TemporaryFile() as f:
        f.write('test data\n')
        f.write('most test data\n')

        print 'READ:', f.read()

        f.write('further data')

        print 'READ:', f.read()

        f.write('even more')
        print 'READ:', f.read()

        print 'READ:', f.read()
        print 'READ:', f.read()

if __name__ == '__main__':
    play_with_fd()

我得到的輸出是:

> python play.py 
READ: 
READ: 
READ: 
READ: 
READ: 

誰能解釋這種行為? 有沒有辦法從臨時文件中讀取? (無需使用不會自動刪除文件的低級mkstemp;而且我不關心命名文件)

你必須把

f.seek(0)

在嘗試讀取文件之前(這會將您發送到文件的開頭),然后

f.seek(0, 2)

返回到最后,以確保您不會覆蓋它。

read()不會返回任何內容,因為您位於文件的末尾。 您需要先調用seek()然后read()將返回任何內容。 例如,將此行放在第一個read()前面:

f.seek(-10, 1)

當然,在再次寫作之前,一定要seek()到最后(如果那是你想繼續寫的地方)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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