![](/img/trans.png)
[英]Are tempfile.TemporaryFile and tempfile.NamedTemporaryFile same in Python > 3
[英]Python - tempfile.TemporaryFile cannot be read; why?
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.