我正在使用os.walk(目录)以递归方式显示该目录中的所有文件。 问题是我只需要在名称中显示包含问题字符串的文件,并且还必须管理元字符。
我现在拥有的是:
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,我该如何使其工作?
答案 0 :(得分:9)
我认为你正在寻找fnmatch:
https://docs.python.org/3/library/fnmatch.html#module-fnmatch
答案 1 :(得分:0)
您可以使用glob。 在Linux中查找命令非常方便并且类似。
import glob
glob.glob("/home/user/*.txt")
在多个子目录中搜索
glob.glob("/home/user/*/*.txt")
或
glob.glob("/home/user/logs?.txt")