使用 Python,如何根据文件系统的搜索获取文件信息对象的数组?

StackOverflow https://stackoverflow.com/questions/1617666

  •  06-07-2019
  •  | 
  •  

目前我有一个 bash 脚本,它运行 find 命令,就像这样:

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

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

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

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

有帮助吗?

解决方案

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))

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

其他提示

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

感兴趣的是,模块glob定义了“globbing”的函数。 strings(使用unix通配符规则匹配字符串)

从中可以看出,构建符合某些标准的文件列表应该很容易。

  • 您可以通过“子流程”模块使用“查找”。
  • 然后,使用“split”字符串函数来剖析每一行
  • 对于每个文件,使用操作系统模块(例如getmtime 等)获取文件信息

或者

  • 使用“walk”和“glob”模块获取对象中的文件路径
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top