.write不能在Python中工作

Dan*_*nny 23 python file

我对Python很新,所以我希望我在这里找不到明显的东西,但它让我难过.我的程序片段如下:

outFile = open('P4Output.txt', 'w')
outFile.write(output)
print output
print "Output saved to \"P4Output.txt\"\n"
Run Code Online (Sandbox Code Playgroud)

输出正确打印到控制台,但如果我打开文件它是空白的.如果我删除文件并再次执行我的程序,则会创建该文件但仍为空.我在之前的另一个程序中使用了这个完全相同的代码块,并且它可以工作,并且仍然有效.但是,如果我打开Python并尝试一些简单的方法:

f = open('test.txt', 'w')
f.write("test")
Run Code Online (Sandbox Code Playgroud)

同样,test.txt已创建,但保留为空白.是什么赋予了?

hug*_*omg 42

f.close()在课程结束时做了什么?

  • 当解释器退出时,文件不是`.close()`吗? (4认同)
  • Python存在时文件被关闭,但文件输出通常是缓冲的,如果没有换行符,则挂起的输出将不会刷新到文件系统. (4认同)

zee*_*kay 34

由于缓冲,在您调用flush()或之前,字符串可能实际上不会显示在文件中close().因此,尝试调用f.close()f.write().with建议使用文件对象,即使with由于异常或return语句而提前退出块,它也会自动为您关闭文件.

with open('P4Output.txt', 'w') as f:
    f.write(output)
Run Code Online (Sandbox Code Playgroud)


tzo*_*zot 11

你需要做一个

outFile.flush()
Run Code Online (Sandbox Code Playgroud)

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


小智 5

尝试将您的语句括在 try / catch 块中,以了解在打开或写入文件期间是否发生了某些事情:

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)
Run Code Online (Sandbox Code Playgroud)

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