【问题标题】:.write not working in Python.write 在 Python 中不起作用
【发布时间】:2011-05-12 01:04:18
【问题描述】:

我对 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 已创建但留空。什么给了?

【问题讨论】:

  • 打印输出时返回什么?你测试过 outFile.write('test') 吗?

标签: python file


【解决方案1】:

您是否在程序结束时使用了f.close()

【讨论】:

  • 解释器退出时文件不是.close() 自己吗?
  • 当 Python 存在时文件被关闭,但文件输出通常被缓冲,如果没有换行符,挂起的输出将不会被刷新到文件系统。
【解决方案2】:

由于缓冲,在您调用flush()close() 之前,该字符串可能不会真正显示在文件中。所以尝试在f.write() 之后调用f.close()。还建议将with 与文件对象一起使用,即使您由于异常或return 语句而提前退出with 块,它也会自动为您关闭文件。

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

【讨论】:

    【解决方案3】:

    你需要做一个

    outFile.flush()
    

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 2019-03-11
          • 2020-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多