在python 3中打印到空文件

时间:2015-02-28 23:57:16

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

当我尝试

时,有人可以告诉我为什么在python 3.4.2中
import codecs
f = codecs.open('/home/filename', 'w', 'utf-8') 
print ('something', file = f) 

它给了我一个空文件?

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

1 个答案:

答案 0 :(得分:3)

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

你没有关闭文件,没有刷新缓冲区,也没有写入足够的文件来自动刷新缓冲区。

执行以下操作之一:

  • 冲洗缓冲区:

    f.flush()
    

    这可以通过flush的{​​{1}}参数来完成:

    print()

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

  • 关闭文件:

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

    或将该文件用作上下文管理器(使用f.close() stamement):

    with

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

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