<p>有关原子和跨文件系统移动的概念性解释,请参阅此<a href="https://alexwlchan.net/2019/03/atomic-cross-filesystem-moves-in-python/" rel="nofollow noreferrer">moves in Python</a>(可以真正节省您的时间)</p>
<p>您可以采取以下方法来解决您的问题:-</p>
<p>->;使用Pyinotify<a href="https://www.linode.com/docs/development/monitor-filesystem-events-with-pyinotify/" rel="nofollow noreferrer">usage of Pynotify</a>监视文件系统事件</p>
<p>->;使用<a href="https://docs.python.org/3/library/fcntl.html#fcntl.flock" rel="nofollow noreferrer">flock</a>将文件锁定几秒钟</p>
<p>->;使用lsof,我们基本上可以检查使用特定文件的进程</p>
<pre><code>`from subprocess import check_output,Popen, PIPE
try:
lsout=Popen(['lsof',filename],stdout=PIPE, shell=False)
check_output(["grep",filename], stdin=lsout.stdout, shell=False)
except:
#check_output will throw an exception here if it won't find any process using that file`
</code></pre>
<p><em>只需在except部分编写日志处理代码,就可以开始了</em></p>
<p>->;一个守护进程,通过使用监视程序库<a href="https://blog.magrathealabs.com/filesystem-events-monitoring-with-python-9f5329b651c3" rel="nofollow noreferrer">watchdog implementation</a>来监视父文件夹的任何更改</p>
<p>->;您可以通过在/proc中的PID/s循环查找特定id来检查另一个进程正在使用的文件(假设您可以控制不断添加新文件以标识其id的程序)</p>
<p>->;可以使用psutil检查文件上是否有句柄</p>