Python,在目录中处理文件安全吗?
(Python 3) 我有一个将入站文件放入目录(不是用Python编写的)的过程 单独的Python应用程序定期处理目录中的所有文件,如下所示:Python,在目录中处理文件安全吗?,python,python-3.x,Python,Python 3.x,(Python 3) 我有一个将入站文件放入目录(不是用Python编写的)的过程 单独的Python应用程序定期处理目录中的所有文件,如下所示: def getfilestobeprocessed(path): filestobeprocessed = [] for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: filestobeproc
def getfilestobeprocessed(path):
filestobeprocessed = []
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
filestobeprocessed.append({ "filename": filename, "dirpath": dirpath })
return filestobeprocessed
我关心的是,如果入站进程正在编写一个大文件的中途,该怎么办。我的Python脚本将做什么?当它真的应该只处理入站处理器已完成写入的文件时,它会开始处理该文件吗?我应该在处理文件之前检测文件是否已打开吗
我会考虑使用Pyinotify,但这家伙批评它使用锁文件
所以。复制时使用filename.lock,然后在完成复制后将其重命名为正确的扩展名
然后放一个if语句,比如
def getfilestobeprocessed(path):
filestobeprocessed = []
for dirpath, dirnames, filenames in os.walk(path):
for filename in filenames:
if !filename.endswith(.lock):
filestobeprocessed.append({ "filename": filename, "dirpath": dirpath })
return filestobeprocessed
也许操作系统可以告诉您另一个进程是否拥有该文件
一个很好的解决方案是,在(比如)60秒后,如果文件没有更改,那么写入文件的内容将不再这样做。查看。当您在处理文件过程中打开(或重命名、删除…)文件时,会出现“正在使用文件”错误。在windows上是代码32。如果并且当您看到此错误时,请不要处理该文件-它将在下一次检查时得到处理。不幸的是,我无法控制入站处理器-它只是将文件放入目标目录。