質問

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帰属
所属していません StackOverflow
scroll top