1. 程式人生 > 程式設計 >Python: glob匹配檔案的操作

Python: glob匹配檔案的操作

glob模組例項詳解

glob的應用場景是要尋找一系列(符合特定規則)檔名。

glob模組是最簡單的模組之一,內容非常少。用它可以查詢符合特定規則的檔案路徑名。查詢檔案只用到三個匹配符:”*”,“?”,“[]”。

”*”匹配0個或多個字元;

”?”匹配單個字元;

”[ ]”匹配指定範圍內的字元,如:[0-9]匹配數字。

假設以下例子目錄是這樣的。

dir
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
dir/subdir/subfile.txt

匹配所有檔案

可以用*匹配任意長度位元組。glob.glob比較常用,返回一個list,也可用glob.iglob返回生成器。

import glob
for name in glob.glob('dir/*'):
  print name
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir

匹配子目錄檔案

可以指定子目錄名稱,也可以用萬用字元代替,不顯示指定。

print 'Named explicitly:'
for name in glob.glob('dir/subdir/*'):
  print '\t',name

print 'Named with wildcard:'
for name in glob.glob('dir/*/*'):
  print '\t',name
Named explicitly:
  dir/subdir/subfile.txt
Named with wildcard:
  dir/subdir/subfile.txt

單位元組萬用字元匹配

除了*以外,還有?匹配單個字元。比如下面這個例子,匹配以file開頭,以.txt結尾,中間是任一字元的檔案。

for name in glob.glob('dir/file?.txt'):

print name

dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt

字元區間匹配[0-9]

比如匹配字尾前是數字的檔案。

for name in glob.glob('dir/*[0-9].*'):

print name

dir/file1.txt

dir/file2.txt

Ref:

官方文件

Python Module of the Week

補充知識:Python glob 遞迴遍歷匹配檔案;os.makedirs()遞迴建立目錄

Glob遞迴遍歷匹配檔案

簡約版

在python中,glob模組用來查詢匹配檔案

常用的匹配規則:

: 匹配所所有

? : 匹配一個字元

如果沒有匹配的,glob.glob(path)將返回一個空的list:[]

from glob import glob
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
print(glob(file_path))

排序版

我喜歡偷懶,所以,Coding能解決的問題一般不會人工解決;

我喜歡整潔,所以,Coding苛求完美,結果奢求整齊劃一。

import re
from glob import glob
def atoi(s):
 return int(s) if s.isdigit() else s
def natural_keys(text):
 return [atoi(c) for c in re.split('(\d+)',text)]
 
file_path = "/home/lihuiyu/Code/results_S2_W20040/*/*.pth"
file_list = glob(file_path)
file_list.sort(key=natural_keys)
for name in file_list:
  print(name)

os.makedirs()遞迴建立目錄

os.mkdir()建立指定的目錄,但如果其上一級目錄不存在,則無法建立成功。

os.makedirs()實現遞迴建立目錄的功能。

以上這篇Python: glob匹配檔案的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。