1. fnmatch UNIX式glob模式匹配
fnmatch模塊用于根據glob模式(如UNIX shell所用的模式)比較檔案名,
1.1 簡單匹配
fnmatch()將一個檔案名與一個模式進行比較,并回傳一個布林值,指示二者是否匹配,如果作業系統使用一個區分大小寫的檔案系統,則這個比較就是區分大小寫的,
import fnmatch
import os
pattern = 'Demo*.py'
print('Pattern :', pattern)
print()
files = os.listdir('.')
for name in sorted(files):
print('Filename: {:<25} {}'.format(
name, fnmatch.fnmatch(name, pattern)))
在這個例子中,這個模式會匹配所有以'Demo'開頭并以'.py'結尾的檔案,

要強制完成一個區分大小寫的比較,而不論檔案系統和作業系統如何設定,可以使用fnmatchcase(),
import fnmatch
import os
pattern = 'Demo*.PY'
print('Pattern :', pattern)
print()
files = os.listdir('.')
for name in sorted(files):
print('Filename: {:<25} {}'.format(
name, fnmatch.fnmatchcase(name, pattern)))
由于測驗這個程式所用的win10系統使用的是區分大小寫的檔案系統,所以模式修改后不會匹配任何檔案,

1.2 過濾
要測驗一個檔案名序列,可以使用filter(),它會回傳與模式引數匹配的檔案名串列,
import fnmatch
import os
import pprint
pattern = 'Demo*.py'
print('Pattern :', pattern)
files = list(sorted(os.listdir('.')))
print('\nFiles :')
pprint.pprint(files)
print('\nMatches :')
pprint.pprint(fnmatch.filter(files, pattern))
在這個例子中,filter()回傳了與這一節關聯的示例源檔案的檔案名串列,

1.3 轉換模式
在內部,fnmatch將glob模式轉換為一個正則運算式,并使用re模塊比較檔案名和模式,translate()函式是將glob模式轉換為正則運算式的公共API,
import fnmatch pattern = 'Demo*.py' print('Pattern :', pattern) print('Regex :', fnmatch.translate(pattern))
要建立一個合法的運算式,需要對一些字符進行轉義,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/177285.html
標籤:Python
