f=open("vmi","w")
f.write("asdf")
import os
os.path.getsize("vmi")
#0 byte
f.close()
os.path.getsize("vmi")
# 4 bytes
ファイルが閉じられる前に、プログラムの実行時に失われた 4 バイトをどこで見つけることができますか?
f=open("vmi","w")
f.write("asdf")
import os
os.path.getsize("vmi")
#0 byte
f.close()
os.path.getsize("vmi")
# 4 bytes
ファイルが閉じられる前に、プログラムの実行時に失われた 4 バイトをどこで見つけることができますか?
最初にデータをフラッシュすることを試みることができます:
f.flush()
なぜこれを行う必要があるのですか?OS は、パフォーマンス上の理由からファイルへの書き込みをバッファリングしようとします。一度に 1024 バイトを書き込むのは、バッファ全体を書き出すよりもはるかに遅くなります。したがって、ファイル/パイプ/ソケットのようなものを扱うときはいつでも、書き込みをバッファリングしている可能性があり、flush
最初にバッファリングする必要があることに注意してください.
ファイルを閉じると、自動的にフラッシュされました。
これを試して:
import os
f = open("vmi", "w")
f.write("asdf")
f.flush()
os.path.getsize("vmi")
#4 byte
f.close()
os.path.getsize("vmi")
# 4 bytes