2017-02-18 124 views
2

我想写一个在Windows上运行的Python脚本。文件每隔几秒被复制到一个文件夹中,并且我每30秒轮询一次该文件夹,以查找上次轮询后复制到文件夹的新文件的名称。获取文件复制到文件夹的时间(Python)

我试过的是使用os.path.getXtime(folder_path)函数之一,并将其​​与我以前的民意调查的时间戳进行比较。如果getXtime值大于时间戳,那么我将处理这些文件。

我试图使用函数os.path.getctime(folder_path),但这不起作用,因为这些文件是在我编写脚本之前创建的。我也试过os.path.getmtime(folder_path),但修改后的时间通常小于轮询时间戳。

最后,我试着os.path.getatime(folder_path),这是第一次将文件复制过来。问题是,我还读取文件夹中的文件后,所以访问时间不断更新,我最终一次又一次地阅读相同的文件。

我不确定什么是更好的方法或功能来做到这一点。

回答

1

这里有一点XY problem。您想知道文件夹中的文件何时发生更改,您尝试了一个归档解决方案,但无法正常工作,现在您想修复您的归档解决方案。

我可以建议,而不是可怕的hackery,您使用现有的软件包设计用于监视文件更改?一个不是轮询循环,但实际上会在变化发生时收到变更通知?虽然inotify仅限于Linux,但有other options for Windows

+1

我还想补充说,轮询出现在目录中的文件是可靠地传输信息的一个非常糟糕的方式。这似乎很容易,我认为这是为什么它如此受欢迎。但是,如果没有一些带外通信来确保目录中“出现”的文件完整,那么它是非常容易出错并且几乎不可能实现的。如果没有这种带外通信,就不可能知道目录中的新文件是完整的。不要忘了搞清楚哪些文件是新的。 “大部分时间都在使用”并不是我**想要交付的东西。 –

相关问题