我正在尝试将路径下的不同文件夹中的文件复制到我的USB驱动器中。 所以我的源目录结构看起来像这个
/用户/阿伦/音乐/歌曲/
在此我有不同的子目录
Songs_1 Songs_2 Songs_3
目标文件夹位于这些Songs目录中的任何一个
下 Songs_1 / Kid Rock /整个夏天.mp3
Songs_2 / Linkin Park /在end.mp3
现在我正在尝试以这样的方式构建我的src_dir。
for album,song in song_database.iteritems():
for s in song:
try:
src_dir_1 = src_dir + "/" + "Songs_1" + "/" + album + "/" + s + ".mp3"
shutil.copy2(src_dir_1,dest_dir
print src_dir_1
except IOError:
pass
try:
src_dir_1 = src_dir + "/" + "Songs_2" + "/" + album + "/" + s + ".mp3"
shutil.copy2(src_dir_1,dest_dir)
print src_dir_1
except IOError:
pass
try:
src_dir_1 = src_dir + "/" + "Songs_3" + "/" + album + "/" + s + ".mp3"
shutil.copy2(src_dir_1,dest_dir)
print src_dir_1
except IOError:
pass
try:
src_dir_1 = src_dir + "/" + "Songs_4" + "/" + album + "/" + s + ".mp3"
shutil.copy2(src_dir_1,dest_dir)
print src_dir_1
except IOError:
pass
有更好的方法吗?
答案 0 :(得分:2)
似乎循环会更好:
for album,song in song_database.iteritems():
for s in song:
for sdir in 'Songs_1', 'Songs_2', 'Songs_3':
try:
src_dir_1 = src_dir + "/" + sdir + "/" + album + "/" + s + ".mp3"
shutil.copy2(src_dir_1,dest_dir)
print src_dir_1
except IOError:
pass
而且,如果您成功将源复制到目的地,也许您想要添加break
语句...
作为旁注,您可能希望改为使用os.path.join
:
src_dir_1 = os.path.join(src_dir, sdir, album, s + ".mp3")