【问题标题】:Print to an empty file in python 3在python 3中打印到一个空文件
【发布时间】:2015-03-01 21:01:33
【问题描述】:

当我尝试时,有人能告诉我为什么在 python 3.4.2 中

import codecs
f = codecs.open('/home/filename', 'w', 'utf-8') 
print ('something', file = f) 

它给了我一个空文件?

以前它运行良好,但突然停止打印到文件

【问题讨论】:

  • file= 需要是一个文件对象。您如何创建该文件对象?
  • 我们无法告诉您原因,因为您需要向我们展示 a) 您如何打开文件,b) 您如何关闭或以其他方式刷新文件的缓冲区,以及 c) 您如何检查文件为空。
  • 内置的open() 功能好得多,为什么还要使用codecs.open()

标签: python python-3.x file-io


【解决方案1】:

缓冲文件写入以避免写入磁盘时的性能消耗。当您达到阈值、显式刷新或关闭文件时,就会刷新缓冲区。

您还没有关闭文件,没有刷新缓冲区,并且没有向文件写入足够的内容来自动刷新缓冲区。

执行以下操作之一:

  • 刷新缓冲区:

    f.flush()
    

    这也可以通过print()flush 参数来完成:

    print('something', file=f, flush=True)
    

    但该参数需要 Python 3.3 或更高版本。

  • 关闭文件:

    f.close()
    

    或将文件用作上下文管理器(使用with 声明):

    with open('/home/filename', 'w', encoding='utf-8') as f:
         print('something', file=f)
    

    当块退出时(完成或异常),文件将自动关闭。

  • 将更多数据写入文件;多少取决于缓冲配置。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2012-09-23
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多