0

目前我有一个运行find命令的 bash 脚本,如下所示:

find /storage/disk-1/Media/Video/TV -name *.avi -mtime -7

这将获取过去 7 天内添加到我的系统中的电视节目列表。然后我继续创建一些符号链接,这样我就可以看到我最新的电视节目。

我希望在 Python 中重新编码,但我有几个问题似乎可以找到使用 Google 的答案(也许我没有在寻找正确的东西)。我认为总结这一点的最好方法是提出以下问题:

如何在我的文件系统上执行搜索(我应该调用find吗?),它为我提供了一组文件信息对象(包含修改日期、文件名等),以便我可以根据日期和其他类似的东西对它们进行排序?

4

3 回答 3

3
import os, time

allfiles = []
now = time.time()

# walk will return triples (current dir, list of subdirs, list of regular files)
# file names are relative to dir at first
for dir, subdirs, files in os.walk("/storage/disk-1/Media/Video/TV"):
    for f in files:
        if not f.endswith(".avi"):
            continue
        # compute full path name
        f = os.path.join(dir, f)
        st = os.stat(f)
        if st.st_mtime < now - 3600*24*7:
            # too old
            continue
        allfiles.append((f, st))

这将返回所有 find 也返回的文件,作为对列表(文件名,统计结果)。

于 2009-10-24T11:18:29.173 回答
2

查看模块 os:os.walk 是遍历文件系统的函数,os.path 是提供文件 mtime 和其他文件信息的模块。os.path 还定义了许多用于解析和拆分文件名的函数。

同样有趣的是,模块 glob 定义了一个用于“globbing”字符串的函数(使用 unix 通配符规则匹配字符串)

由此,构建与某些标准匹配的文件列表应该很容易。

于 2009-10-24T11:10:50.830 回答
1
  • 您可以通过“子流程”模块使用“查找”。
  • 之后,使用“split”字符串函数对每一行进行剖析
  • 对于每个文件,使用 OS 模块(例如 getmtime 等)获取文件信息

或者

  • 使用“walk”和“glob”模块获取对象中的文件路径
于 2009-10-24T11:08:54.470 回答