Python - tempfile.TemporaryFile を読み取れません。なぜですか? 質問する

Python - tempfile.TemporaryFile を読み取れません。なぜですか? 質問する

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)

最後に戻って上書きされないようにします。

おすすめ記事