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

(Python 3)

我有一个将入站文件放入目录(不是用Python编写的)的过程

单独的Python应用程序定期处理目录中的所有文件,如下所示:

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。如果并且当您看到此错误时,请不要处理该文件-它将在下一次检查时得到处理。

不幸的是,我无法控制入站处理器-它只是将文件放入目标目录。