我希望找到一种方法,可以通知Python脚本文件复制完成。以下是场景:
1. 脚本通过不断使用os.listdir()进行轮询来监视文件夹to_print。 2. 每次os.listdir()返回一个文件列表,其中存在一个之前没有看到的文件,脚本就会对该文件执行一些操作,包括打开并操作其内容。
当文件很小时,这样做没问题,并且从原始源将文件复制到被监视的目录所花费的时间小于下一次os.listdir()轮询的剩余时间。但是,如果轮询到了一个正在复制的文件,那么当脚本尝试对其进行操作时,文件内容将会损坏。
相反,我希望能够(使用os.stat或其他方式)知道文件当前正在复制,并在复制完成后再对其进行操作(如果需要)。 我当前的想法是每次发现新文件时使用os.stat(),然后等待下一次轮询并比较上次轮询以来修改/创建时间,如果它们仍然相同,则该文件是“稳定的”,否则继续轮询,直到它稳定下来。 但是,我不确定这是否有效,因为我对Linux / Unix如何更新这些值并不太熟悉。
1. 脚本通过不断使用os.listdir()进行轮询来监视文件夹to_print。 2. 每次os.listdir()返回一个文件列表,其中存在一个之前没有看到的文件,脚本就会对该文件执行一些操作,包括打开并操作其内容。
当文件很小时,这样做没问题,并且从原始源将文件复制到被监视的目录所花费的时间小于下一次os.listdir()轮询的剩余时间。但是,如果轮询到了一个正在复制的文件,那么当脚本尝试对其进行操作时,文件内容将会损坏。
相反,我希望能够(使用os.stat或其他方式)知道文件当前正在复制,并在复制完成后再对其进行操作(如果需要)。 我当前的想法是每次发现新文件时使用os.stat(),然后等待下一次轮询并比较上次轮询以来修改/创建时间,如果它们仍然相同,则该文件是“稳定的”,否则继续轮询,直到它稳定下来。 但是,我不确定这是否有效,因为我对Linux / Unix如何更新这些值并不太熟悉。
newfiles
难道不只是一个空列表吗?而且process
肯定可以合理地处理一个空列表。(如果不能,那么应该进行调整以使其能够处理。) - huon