天天看點

Python程式設計:fnmatch比對檔案名

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