2017-02-05 53 views
1

好的,所以我有两个列表;一个是歌曲标题列表,另一个是通过运行os.listdir()生成的文件列表,它将是歌曲mp3文件。遍历两个列表,检查匹配,然后重命名

修订

songs = ['The Prediction', 'Life We Chose', 'Nastradamus', 'Some of Us Have Angels', 'Project Windows', 'Come Get Me', "Shoot 'em Up", 'Last Words', 'Family', 'God Love Us', 'Quiet Niggas', 'Big Girl', 'New World', 'You Owe Me', 'The Outcome'] 

每首歌曲是unicode

filenames = ['Nas - Big Girl.mp3', 'Nas - Come Get Me.mp3', 'Nas - God Love Us.mp3', 'Nas - Life We Chose.mp3', 'Nas - Nastradamus.mp3', 'Nas - New World.mp3', "Nas - Shoot 'Em Up.mp3", 'Nas - Some of Us Have Angels.mp3', 'Nas - The Outcome.mp3', 'Nas - The Prediction.mp3', 'Nas Feat. Bravehearts - Quiet Niggas.mp3', 'Nas Feat. Ginuwine - You Owe Me.mp3', 'Nas Feat. Mobb Deep - Family.mp3', 'Nas Feat. Nashawn - Last Words.mp3', 'Nas Feat. Ronald Isley - Project Windows.mp3'] 

每个文件名是一个字符串

我希望能够看的歌曲列表,如果在一个歌曲列表中的项目与文件名列表中的内容匹配,将文件重命名为歌曲内容。

这有道理吗?

+1

也许我是误解。但是,如果您要将文件重新命名为与歌曲标题相匹配,那么您如何匹配这两个列表中的条目? – roganjosh

+2

你的问题只有一个列表 – citynorman

+3

@roganjosh说什么。 “匹配”是什么意思如果字符串不相同?你怎么能从一个文件名中知道它的标题? –

回答

1

基本上它看起来是这样的:

import os 

for song in songs: 
    for filename in filenames: 
     if song.lower() in filename.lower(): # lower() just in case 
      os.rename(filename, song + '.mp3') 

如果您有什么需要,请询问。

+0

当切换for循环时工作得更好 用于文件名的文件名: 用于歌曲中的歌曲: –