【问题标题】:python shutil copy function missing last few linespython shutil复制功能缺少最后几行
【发布时间】:2013-03-08 21:23:23
【问题描述】:

我有一个 python 脚本,它生成一个大文本文件,该文件需要一个特定的文件名,稍后将通过 FTP 传输。创建文件后,它会将其复制到新位置,同时修改日期以反映发送日期。唯一的问题是复制的文件缺少原始文件的最后几行。

from shutil import copy

// file 1 creation

copy("file1.txt", "backup_folder/file1_date.txt")

这可能是什么原因造成的?原始文件是否未完成写入导致副本仅获取那里的内容?

【问题讨论】:

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


    【解决方案1】:

    您必须确保创建 file1.txt 的所有内容都已关闭文件句柄。

    文件写入是缓冲的,如果不关闭文件,缓冲区不会被刷新。文件末尾丢失的数据仍在该缓冲区中。

    最好通过使用文件对象作为上下文管理器来确保关闭文件:

    with open('file1.txt', 'w') as openfile:
        # write to openfile
    
    # openfile is automatically closed once you step outside the `with` block.
    

    【讨论】:

    • 我很新,我错过了一些简单的东西。在复制之前添加了一个关闭文件并修复了它。
    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2018-07-24
    相关资源
    最近更新 更多