当尝试使用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()
非常感谢。
埃里克
答案 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()
据我所知,没有理由关闭文件处理程序不会清空缓冲区并写入文件,但谁知道呢?....