python shutil复制函数缺少最后几行

时间:2013-03-08 21:23:23

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

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

from shutil import copy

// file 1 creation

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

可能导致这种情况的原因是什么?原始文件是不是可以写完,导致副本只能得到那里的东西?

1 个答案:

答案 0 :(得分:3)

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

缓冲文件写入,如果不关闭文件,则不刷新缓冲区。文件末尾的缺失数据仍然位于该缓冲区中。

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

with open('file1.txt', 'w') as openfile:
    # write to openfile

# openfile is automatically closed once you step outside the `with` block.