我对Python相当陌生,所以希望我只是在这里错过了一些明显的东西,但它让我难倒了。 我的程序片段如下:
outFile = open('P4Output.txt', 'w')
outFile.write(output)
print output
print "Output saved to "P4Output.txt"n"
输出可以正确打印到控制台,但是如果我打开文件,它是空白的。 如果我删除该文件并再次执行我的程序,该文件已创建,但仍为空。 我之前在我的另一个程序中使用了完全相同的代码块,它有效,并且仍然有效。 但是,如果我打开 Python 并尝试一些简单的事情,例如:
f = open('test.txt', 'w')
f.write("test")
同样,创建了 test.txt,但留空。 什么给?
你记得在节目结束时f.close()
吗?
由于缓冲,字符串可能不会实际显示在文件中,直到您调用 flush()
或 close()
。所以试着在f.write()
后打电话给f.close()
.还建议对文件对象使用 with
,即使您由于异常或return
语句而提前突破with
块,它也会自动为您关闭文件。
with open('P4Output.txt', 'w') as f:
f.write(output)
你需要做一个
outFile.flush()
如果要将缓冲的内容写入磁盘。如果已完成对文件的写入,则file.close
调用将在关闭文件之前隐式刷新缓冲的数据。
尝试将您的语句包含在 try
/except
块中,以了解在打开或写入文件期间是否发生了什么:
try:
outFile = open('P4Output.txt', 'w')
outFile.write(output)
outFile.close()
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
并始终关闭文件,以便系统可以在关闭文件之前将数据刷新到文件中。
也许你应该使用绝对路径而不是相对路径。