11

我正在使用 os.walk(directory) 以递归方式显示该目录中的所有文件。问题是我只需要显示名称中包含询问字符串的文件,并且它也必须管理元字符。

我现在拥有的是:

for root, subdirs, files in os.walk(dir1):
        for filename in files:
            if substring in filename:
                name_path = os.path.join(root,filename)
                list.insert(END, name_path)

这很好用,但如果 substring = *因为我没有包含“*”的文件,我的列表是空的。

substring那么,如果包含 METACHAR ,我该如何让它工作?

4

2 回答 2

13

我认为您正在寻找 fnmatch:

https://docs.python.org/3/library/fnmatch.html#module-fnmatch

于 2016-03-29T20:46:59.007 回答
3

您可以使用 glob。在 Linux 中查找命令非常方便且类似。

import glob
glob.glob("/home/user/*.txt")

在多个子目录中搜索

glob.glob("/home/user/*/*.txt")

或者

glob.glob("/home/user/logs?.txt")
于 2019-05-11T18:19:09.880 回答