打印重定向到文件SOMETIMES导致python中的打印输出不完整

时间:2011-09-03 19:57:33

标签: python file

我想将列表保存到文件中,因此我循环浏览并将其写入文件。一切安好。但有时(!?!?)列表不是完全写的,它会在项目中间停止渲染。不会引发任何错误,它会以静默方式继续执行其余代码。 我已经尝试了几种方法来编写它,几个版本的python(2.4,2.5,2.7),它们都是一样的。它有时工作,有时不工作。当它打印到终端窗口而不是文件时,它正常工作而没有毛刺。我错过了什么吗?

这就是它

...    

from bpnn import *

...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w")
for i in range(net.ni):
    print>>writewtsi, net.wi[i]

bpnn是来自这里的神经网络模块: http://python.ca/nas/python/bpnn.py

3 个答案:

答案 0 :(得分:2)

完成所有写操作后关闭文件,以确保将任何写缓存刷新到驱动器:

writewtsi.close()

答案 1 :(得分:0)

如果您使用以下问题,问题是否仍然存在:

with open("c:/files/wtsi.txt", "w") as writewtsi:
    for i in range(net.ni):
        print>>writewtsi, net.wi[i]            

答案 2 :(得分:0)

使用

.flush()
像这样:

...     
from bpnn import *
...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w")
for i in range(net.ni):
    print>>writewtsi, net.wi[i]
    writewtsi.flush()

或者您可以使用第3个参数使文件无缓冲打开():

...     
from bpnn import *
...

# save input weights for later use:
writewtsi = open("c:/files/wtsi.txt", "w", 0)
for i in range(net.ni):
    print>>writewtsi, net.wi[i]