Python-tempfile.TemporaryFileを読み取ることができません。どうして?
-
05-07-2019 - |
質問
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()
を最後まで行ってください(書き込みを継続したい場合)。
所属していません StackOverflow