首页 > 解决方案 > 当分隔符不存在时继续并写入内容

问题描述

我有一个要打印的 mp3 文件列表:艺术家,为以下作品命名,但是,如果遇到没有“ - ”分隔符的文件,它当然会停止,我怎样才能让它继续,只是在艺术家中打印文件名中的内容是什么?

for mp3file in glob.glob("**/*.mp3", recursive = True):

        path, filename = os.path.split(mp3file)
        NoExtension = os.path.splitext(filename)[0]

        print('Name: '+NoExtension)
        splitFilename = NoExtension.split(' - ', 1)
        print('Artist: '+splitFilename[0]+'\n')
        print('Title: '+splitFilename[1])

输出

Name: CamelPhat - Both [Club Remix] [Clean, Music-In, Music-Out, Mashup Redrum]
Artist: CamelPhat
Title: Both [Club Remix] [Clean, Music-In, Music-Out, Mashup Redrum]

Name: Bob Marley - Is This Love (Montmartre - Remix) [Peak Hour Redrum] [Mashup] [Clean, Beat-In, Beat-Out, Mashup]
Artist: Bob Marley
Title: Is This Love (Montmartre - Remix) [Peak Hour Redrum] [Mashup] [Clean, Beat-In, Beat-Out, Mashup]

Name: Molly (Dj Nasa Secret Bootleg)
Artist: Molly (Dj Nasa Secret Bootleg)
Traceback (most recent call last):
  File "G:\Scripts\IDremoveAndReplace.py", line 20, in <module>
    print('Title: '+splitFilename[1])
IndexError: list index out of range

标签: python-3.x

解决方案


您可以将您的代码放在 try - except 块中并让异常打印您想要的内容

例如

for mp3file in glob.glob("**/*.mp3", recursive = True):
    try:
        path, filename = os.path.split(mp3file)
        NoExtension = os.path.splitext(filename)[0]

        print('Name: '+NoExtension)
        splitFilename = NoExtension.split(' - ', 1)
        print('Artist: '+splitFilename[0]+'\n')
        print('Title: '+splitFilename[1])
    except IndexError as e:
        print(e)
        #Some other logic here
        print('Cannot find title')

推荐阅读