Python 需要实现嵌套的try语句,但有一个例外

Python 需要实现嵌套的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:

我正在尝试将不同文件夹中的文件复制到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:
        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
软件包时,我有点畏缩