2
f=open("vmi","w")
f.write("asdf")
import os
os.path.getsize("vmi")
#0 byte
f.close()
os.path.getsize("vmi")
# 4 bytes

ファイルが閉じられる前に、プログラムの実行時に失われた 4 バイトをどこで見つけることができますか?

4

2 に答える 2

5

最初にデータをフラッシュすることを試みることができます:

f.flush()

なぜこれを行う必要があるのですか?OS は、パフォーマンス上の理由からファイルへの書き込みをバッファリングしようとします。一度に 1024 バイトを書き込むのは、バッファ全体を書き出すよりもはるかに遅くなります。したがって、ファイル/パイプ/ソケットのようなものを扱うときはいつでも、書き込みをバッファリングしている可能性があり、flush最初にバッファリングする必要があることに注意してください.

ファイルを閉じると、自動的にフラッシュされました。

于 2012-06-05T14:28:12.563 に答える
1

これを試して:

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
于 2012-06-05T14:32:43.690 に答える