使用单个写入调用打印长字符串

时间:2013-09-04 14:05:58

标签: python

当尝试使用python(python 2.7.3-32位,windows 7)编写一个带有write调用的长字符串时,我发现了一个非常意外的特性(或错误?)。

调用print "a"*4000在stdout上打印似乎正常的行,但调用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()

非常感谢。

埃里克

1 个答案:

答案 0 :(得分: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()

据我所知,没有理由关闭文件处理程序不会清空缓冲区并写入文件,但谁知道呢?....