.write在Python中不起作用

zsohkypk  于 2023-05-27  发布在  Python
关注(0)|答案(5)|浏览(220)

我是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,但将其留空。怎么了?

0qx6xfy6

0qx6xfy61#

你记得在程序结束时输入f.close()吗?

tsm1rwdh

tsm1rwdh2#

由于缓冲的原因,字符串实际上可能不会显示在文件中,直到您调用flush()close()。所以尝试在f.write()之后调用f.close()。另外,建议将with与文件对象一起使用,即使由于异常或return语句而提前中断了with块,它也会自动关闭文件。

with open('P4Output.txt', 'w') as f:
    f.write(output)
fumotvh3

fumotvh33#

你需要做一个

outFile.flush()

如果您希望将缓冲的内容写入磁盘。如果您完成了对文件的写入,file.close调用将在关闭文件之前隐式地刷新缓冲的数据。

vulvrdjw

vulvrdjw4#

尝试将您的语句包含在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)

并始终关闭文件,以便系统可以在关闭文件之前将数据刷新到文件中。

a8jjtwal

a8jjtwal5#

也许你应该使用绝对路径而不是相对路径。

相关问题