продолжить, когда разделитель отсутствует, и все равно записать содержимое

У меня есть список 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

person Gromit    schedule 05.06.2019    source источник


Ответы (2)


Вы можете поместить свой код в блок 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')
person John S    schedule 05.06.2019
comment
Жизнь нуба-питона 8 строк кода после 1 часа гугления, ответ через 1 минуту в стеке :) это отлично работает, спасибо! - person Gromit; 05.06.2019

Одним из вариантов может быть использование блока try:

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')

        try:                 
            print('Title: ' + splitFilename[1])
        except IndexError as ie:
            print('Title: ' + splitFilename[0])
person Kent Martin    schedule 05.06.2019