python shutil 复制函数丢失最后几行

1 投票
1 回答
1074 浏览
提问于 2025-04-17 18:27

我有一个Python脚本,它会生成一个很大的文本文件,这个文件需要一个特定的名字,之后会通过FTP上传。创建完这个文件后,它会把文件复制到一个新位置,同时修改日期,以显示发送的日期。唯一的问题是,复制的文件缺少了原文件的几行内容。

from shutil import copy

// file 1 creation

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

这可能是什么原因呢?是不是因为原文件还没有写完,所以复制的时候只拿到了已经写好的部分?

1 个回答

5

你需要确保创建 file1.txt 的地方已经 关闭 了文件句柄。

写文件的时候会使用缓存,如果你不关闭文件,缓存里的内容就不会被写入到文件中。文件末尾缺失的数据仍然在这个缓存里。

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

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

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

撰写回答