【问题标题】:Efficient way to check the age of the oldest folder with Pathlib使用 Pathlib 检查最旧文件夹年龄的有效方法
【发布时间】:2019-03-31 18:39:32
【问题描述】:

我想在目录中查找最旧的文件夹。目录中有很多文件夹。如果太旧,我想调用一个单独的函数来处理删除(与这个问题无关)。

目前我有以下:

import pendulum  # just to get a timestamp
from pathlib import Path
def is_cleanup_needed():
    path = "D:\Test"  # Just an example, Linux user please change this
    for folder in path.glob('**/*'):
        folder_age = folder.stat().st_ctime  # Get the time in seconds
        age_in_hours = (pendulum.now().timestamp() - folder_age) / (60 * 60)
        if age_in_hours > 12:  # replace 12 with any hour you want
            return True
    return False

问题是这非常低效。我必须检查每个文件夹。我有很多文件夹。没有办法只检查最旧的文件夹吗?

我只需要一个最旧的文件夹,所以我想要一种方法来获得它,而无需遍历路径中的每个文件夹。

编辑:只要在 Windows(7 和 10)和 Linux(Ubuntu 18.10)下工作,它就不必与 Pathlib 一起工作

【问题讨论】:

  • 你的意思是效率低下?如果你需要知道他们的年龄,真的没有办法避免每个文件的stat
  • 我只需要最旧的文件夹。为什么我无法获取按年龄排序且仅限于 1 个结果的文件夹?

标签: python python-3.x path


【解决方案1】:

不确定它是否会快得多,但这里有一种选择最旧文件夹的方法。

sorted(path.glob('**/*'), key = lambda x: x.stat().st_ctime)[0]

【讨论】:

  • 感谢您的回答。它比我的代码更好,但我认为它也会检查每个文件夹。
  • 它会检查每个文件夹。我认为您无法使用 pathlib 避免这种情况。
  • 不一定是 pathlib。如果没有其他方法,我会使用其他方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
相关资源
最近更新 更多