1

write在尝试使用 python(python 2.7.3-32 位,Windows 7)通过单个调用编写长字符串时,我发现了一个非常意外的功能(或错误? )。

在标准输出上调用print "a"*4000打印一条看起来没问题的行,但调用print "a"*5000只会产生一行包含 5000 个空格而不是“a”字符的行。

您是否知道出了什么问题以及如何规避该问题?

附加信息:

使用较新版本的 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 回答