2016-05-19 17 views
0

私のコンピュータで音楽ファイルを検索しようとしています。私は以下のコードを試しましたが、ファイルの名前がまったく同じ場合に結果が得られます。 コンピュータでの音楽ファイルの検索

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 

は今、私たちはそれがresult.Soを与える代わりに、マイケル・ジャクソンのミハル・ジャクソンを入力した場合、スペルがwrong.Likeであれば、Googleはまた、結果を与えるとして間違ったスペルのミスのためにも、曲を検索しようとしていますこれは私は次のコードを試してみました。

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誰でも間違いが何であるかを教えて取得していないですか、なぜ私は得ていないのです。これはおそらくあなたの全体の答えではないかもしれませんが、私はあなたがここからそこに着くことができますね

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

答えて

0

globパッケージとのようなものを試してみてください。

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

この回答があなたの問題を解決する場合は、upv​​oting/acceptingを考慮してください。 –

+0

私はそうするために十分な評判を持っていないので、私はあなたが助けることができるように私の質問をアップしてください:) – Berry

+0

私はすでに...心配しないで、私はあなたが知らなかったと思った。 –

関連する問題