fnmatch提供了一種類似Unix shell-style風格的檔案名比對方式
比對模式
* 比對任何字元
? 比對一個字元
[seq] 比對在集合seq 中的任意字元
[!seq] 比對不在集合seq 中的任意字元
代碼示例
import fnmatch
filenames = [
"China.txt",
"Japan.txt",
"America.py",
"Korea.conf",
]
# fnmatch 和 fnmatchcase 比對檔案,差別不太明顯
for filename in filenames:
if fnmatch.fnmatch(filename, '*.txt'):
print(filename)
"""
China.txt
Japan.txt
"""
for filename in filenames:
if fnmatch.fnmatchcase(filename, '*.txt'):
print(filename)
"""
China.txt
Japan.txt
"""
# filter 過濾符合的檔案
filenames = fnmatch.filter(filenames, "*.txt")
# 類似:[n for n in names if fnmatch(n, pattern)]
print(filenames)
# ['China.txt', 'Japan.txt']
# translate 翻譯成re 正規表達式
print(fnmatch.translate("*.txt"))
# (?s:.*\.conf)\Z
參考:
fnmatch — Unix filename pattern matching