web-dev-qa-db-ja.com

Python:ファイル名に文字列が含まれています(メタ文字?)

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が含まれている場合、どうすればこれを機能させることができますか?

7
Croc

私はあなたがfnmatchを探していると思う:

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

9
Brian

Globを使用できます。 Linuxでコマンドを見つけるのに非常に便利で似ています。

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

複数のサブディレクトリを検索する

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

または

glob.glob("/home/user/logs?.txt")
1
amyst