【问题标题】:Is there anyway to get files modified in last 24 hours without looping through all files in directory无论如何要在过去 24 小时内修改文件而不遍历目录中的所有文件
【发布时间】:2020-08-15 02:22:28
【问题描述】:

是否可以在不遍历目录中的所有文件的情况下在过去 24 小时内修改文件? 我不想遍历目录中所有文件的原因是因为目录中有超过200k的文件。

for pdf in os.scandir(ERROR_FOLDER):
    path = os.path.join(ERROR_FOLDER,pdf)      
    filetime = dt.datetime.fromtimestamp(
            os.path.getmtime(path))   
    if (date_start < filetime < date_end):
        files.append(pdf)

【问题讨论】:

  • 遍历所有文件名是正常的做法。大多数现代文件系统和操作系统在这方面的速度都相当快。您可以监视目录 - 有几种不同的方法,它取决于操作系统。当然,这取决于始终运行的程序。搜索“Python watch directory for changes”或类似的东西会给你提供帮助的包。

标签: python operating-system


【解决方案1】:

一般情况下没有办法做到这一点,但对于特定情况是可能的。

例如,如果这些文件是通过某种自动化流程创建和修改的,您可以通过在修改后将文件添加到数据库中来维护过去 24 小时内修改过的文件的数据库(在同一修改它们的脚本/程序),并让数据库使用 cron 作业删除旧条目。

根据修改文件的频率,您还可以有一个 cron 作业循环遍历目录中的所有文件并保存过去 24 小时内已修改文件的列表,以便您的程序快速运行当您需要时,但可能无法获取最新的文件(在 cron 作业运行和程序运行之间进行修改)。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 2015-03-05
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多