1

writePython (python 2.7.3-32 ビット、Windows 7) を使用して 1 回の呼び出しで長い文字列を書き込もうとしたときに、まったく予想外の機能 (またはバグ ?) を見つけました。

を呼び出すprint "a"*4000と、問題ないように見える行が stdout に出力されますが、呼び出すとprint "a"*5000、「a」文字ではなく 5000 個の空白を含む行が生成されます。

何がうまくいかないのか、どうすればその問題を回避できるのか分かりますか?

追加情報:

新しいバージョンの python (2.7.5) を使用しても、同じエラーが発生します。これは、前述の問題を生成するスニペットです。

f = open("toto.dat","w",1000000)
s = "a"*5000
f.write(s)
f.write("\n")
f.close()

どうもありがとう。

エリック

4

1 に答える 1

0

多分バッファの問題?

これを試してください:

from os import fsync

fh = open("test.dat","w")
s = "a"*5000
fh.write(s)
fh.write("\n")
fh.flush()
fsync(fh.fileno())
fh.close()

私の知る限り、ファイル ハンドラを閉じてもバッファが空にならず、ファイルに書き込まれないという理由はありませんが、誰が知っているのでしょうか? ...

于 2013-09-04T18:33:26.747 に答える