2016-05-19 53 views
0

我試圖在我的電腦中搜索音樂文件。我嘗試了下面給出的代碼,但它在文件名稱完全相同時給出了結果。在python中的電腦中搜索音樂文件

import fnmatch 
import os 
import webbrowser 
song = raw_input("enter the song") 
to_search = [song + '.mp3'] 

path = ['G:\\','F:\\','E:\\'] 
for k in path: 
    for root, dirnames, filenames in os.walk(k): 
     for extensions in to_search: 
     for filename in fnmatch.filter(filenames, extensions): 
      matches=(os.path.join(root, filename)) 
print matches 
if not matches: 
    print ("no such song is found") 
else: 
    webbrowser.open(matches)      #play the song if found 

現在,我想也搜索歌曲的錯誤拼寫錯誤的谷歌也給出結果,如果拼寫wrong.Like如果我們輸入米哈爾·傑克遜,而不是邁克爾·傑克遜它給人的result.So爲此,我嘗試了下面的代碼。

import os 
import webbrowser 
import difflib 

song = raw_input("enter the song") 
to_search = [song + '.mp3'] 
path = ['E:\\'] 
for root, dirnames, filenames in os.walk(path[0]): 
    d = difflib.SequenceMatcher(None,filenames, to_search).ratio() 
    if d>=0.6: 
     print d 
     matches=(os.path.join(root,filenames)) 

webbrowser.open(matches) 

,但我沒有得到任何人results.Can告訴我什麼是錯誤或爲什麼我沒有收到。

回答

0

嘗試glob包,喜歡的東西:

for file in glob.glob('G:\\*\\*.mp3"): 
    print(file) 

這可能不是可能是你完整的答案,但我想你可以從這裏到達那裏。

0

SequenceMatcher你正在比較一個列表中的幾個文件名與一個列表中只包含你正在尋找。因此,不匹配的結果。 嘗試以下操作:

import os 
import webbrowser 
import difflib 


song = raw_input("enter the song") 
to_search = song + '.mp3' 
path = ['E:\\'] 
for root, dirnames, filenames in os.walk(path[0]): 
    for filename in filenames: 
     d = difflib.SequenceMatcher(None,filename, to_search).ratio() 
     if d>=0.6: 
      matches=(os.path.join(root, filename)) 

webbrowser.open(matches) 
+0

快樂chinesh,如果這個答案解決您的問題,請考慮upvoting /接受它。 –

+0

我不能這樣做,因爲我沒有足夠的聲譽這樣做。請提高我的問題,以便我可以幫助你:) – Berry

+0

我已經...不用擔心,我以爲你不知道。 –