Python 需要实现嵌套的try语句,但有一个例外
我正在尝试将不同文件夹中的文件复制到usb驱动器的路径下。 我的源目录结构如下所示 /用户/阿伦/音乐/歌曲/ 在这个目录下,我有不同的子目录 歌曲1 歌曲2 歌曲3 目标文件夹位于这些歌曲目录下的任何一首 歌曲\u 1/儿童摇滚乐/整个夏天。mp3Python 需要实现嵌套的try语句,但有一个例外,python,try-catch,Python,Try Catch,我正在尝试将不同文件夹中的文件复制到usb驱动器的路径下。 我的源目录结构如下所示 /用户/阿伦/音乐/歌曲/ 在这个目录下,我有不同的子目录 歌曲1 歌曲2 歌曲3 目标文件夹位于这些歌曲目录下的任何一首 歌曲\u 1/儿童摇滚乐/整个夏天。mp3 Songs_2/Linkin Park/In end.mp3 现在,我正在以这样一种尝试/例外的方式构造src_dir for album,song in song_database.iteritems(): for s in song:
Songs_2/Linkin Park/In 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
有更好的方法吗?似乎循环会更好:
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")
为什么要忽略IOError?当我看到人们不使用
os.path
软件包时,我有点畏缩