【Python】詳解glob模組匹配檔案
阿新 • • 發佈:2019-01-29
glob的應用場景是要尋找一系列(符合特定規則)檔名。
glob模組是最簡單的模組之一,內容非常少。用它可以查詢符合特定規則的檔案路徑名。查詢檔案只用到三個匹配符:”*”, “?”, “[]”。
- ”*”匹配0個或多個字元;
- ”?”匹配單個字元;
- ”[ ]”匹配指定範圍內的字元,如:[0-9]匹配數字。
假設以下例子目錄是這樣的。
1、匹配所有檔案:可以用*匹配任意長度位元組。glob.glob比較常用,返回一個list,也可用glob.iglob返回生成器。
import glob
glob.glob('./Desktop/dir/*')
Out[42]:
['./Desktop/dir\\file.txt' ,
'./Desktop/dir\\file1.txt',
'./Desktop/dir\\file2.txt',
'./Desktop/dir\\filea.txt',
'./Desktop/dir\\fileb.txt',
'./Desktop/dir\\subdir']
glob.glob('./Desktop/dir/*/*')
Out[43]: ['./Desktop/dir\\subdir\\subflie.txt']
匹配子目錄檔案
可以指定子目錄名稱,也可以用萬用字元代替,不顯示指定。
print('Named explicitly:')
for name in glob.glob('Desktop/dir/subdir/*' ):
print('\t', name)
print('Named with wildcard:')
for name in glob.glob('Desktop/dir/*/*'):
print('\t', name)
Named explicitly:
Desktop/dir/subdir\subflie.txt
Named with wildcard:
Desktop/dir\subdir\subflie.txt
2、單位元組萬用字元匹配,除了*以外,還有?匹配單個字元。比如下面這個例子,匹配以file開頭,以.txt結尾,中間是任一字元的檔案。
for name in glob.glob('Desktop/dir/file?.txt'):
print(name)
Desktop/dir\file1.txt
Desktop/dir\file2.txt
Desktop/dir\filea.txt
Desktop/dir\fileb.txt
3、字元區間匹配[0-9],比如匹配字尾前是數字的檔案。
for name in glob.glob('Desktop/dir/*[0-9].*'):
print(name)
Desktop/dir\file1.txt
Desktop/dir\file2.txt