2015-04-30 60 views
0

我試圖用this我的計劃,以獲得一個mp3文件中不區分大小寫,而且我這個代碼:Python中獲得文件,無論上限或下限

import glob 
import fnmatch, re 

def custom_song(name): 
    for song in re.compile(fnmatch.translate(glob.glob("../music/*"+name+"*.mp3")), re.IGNORECASE): 
     print (song) 
custom_song("hello") 

但是,當我執行腳本我收到以下錯誤:

File "music.py", line 4, in custom_song 
    for song in re.compile(fnmatch.translate(glob.glob("../music/*"+name+"*.mp3")), re.IGNORECASE): 
TypeError: '_sre.SRE_Pattern' object is not iterable 

我該如何解決?

回答

0

fnmatch.translate需要一個字符串作爲參數,而不是文件名列表/迭代器如將由水珠被退回,因此這樣的:

pattern = re.compile(fnmatch.translate(name + "*.mp3"), 
    re.IGNORECASE) 

此外,還必須遍歷一些文件名,看他們是否match編譯模式:

directory = '../music/' 
for name in os.listdir(directory): 
    if pattern.match(name): 
     print(os.path.join(directory, name)) 
+0

哇,非常感謝,它的作品就像一個魅力! – Javierd98