2016-06-16 65 views

回答

4

您可能會將正則表達式語法與glob結構混淆。 globbing中的[0-9]*表示「一個數字後跟零個或多個任意字符」。所以放下*

擴展通配符存在的「一個或多個」限定符,但不支持glob,所以別無選擇,只能使用正則表達式,即做自己的文件名模式匹配。有幾種方法可以做到這一點,這裏是一個:

import os 
import re 

files = [] 
for fname in os.listdir('.'): 
    if re.match(r"myfile_[0-9]+.txt", fname): 
     files.append(fname) 

print files 

請注意,稀土是不完全一樣的你,我用+這意味着「更前面的模式之一」,一個*將意味着「零或多」 - 所以數字將是可選的,這可能是你想要的(我不確定)。

的大量代碼可以做一個列表理解,但這可以說是寬鬆一些可讀性:

files = [fname for fname in os.listdir('.') 
     if re.match(r"myfile_[0-9]+.txt", fname)]