【发布时间】:2021-06-24 11:07:58
【问题描述】:
我必须等到文件复制/上传完全使用 python 完成(首选方法),bash/shell 也可以(我将从 python 调用)
我已经共享 nfs 目录 /data/files_in/,如果有人将文件复制/上传到 /data/files_in/ 目录,我应该通知其他应用程序,只有在完成文件复制/上传完成后
我当前检查文件的代码是否已完成复制
while True:
current_size = Path(file_path).stat().st_size
time.sleep(5)
result_size = Path(file_path).stat().st_size
if result_size == current_size:
break
# Notify your application
它只适用于小文件,对于像 100G 文件这样的大文件,它不能正常工作。
我增加了一个计时器,但有时它仍然会失败,并且基于计时器的方法似乎不是一个值得依赖的好主意。
有没有其他方法,我可以实现代码来解决这个问题?
操作系统:Linux、Cent 操作系统 Python 版本:3.9
【问题讨论】:
-
无法正常工作:这是什么意思?
-
文件复制前的意思是从while循环出来
-
您永远不会检查复制是否完成。您只需检查文件大小在过去 5 秒内是否未更改。
-
是的,目前我正在使用文件大小作为逻辑,检查是否完成,如果没有更改,则文件复制完成。
-
我认为没有一种万无一失的方法可以确定复制是否完成,除非您以某种方式与创建该文件的进程本身进行通信。因此,您想到的每个启发式方法都可能偶尔中断。
标签: python python-3.x linux shell nfs