1. 程式人生 > >【Python】詳解glob模組匹配檔案

【Python】詳解glob模組匹配檔案

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