のTemporaryFile の公式ドキュメント読みます:
モードパラメータはデフォルトで「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 を使用する必要はありません。名前付きファイルについては気にしません)
ベストアンサー1
あなたは置かなければなりません
f.seek(0)
ファイルの読み込みを試みる前に(ファイルの先頭に移動します)、
f.seek(0, 2)
最後に戻って上書きされないようにします。