Специальный тип eyed3 становится питоном NoneType - PullRequest
0 голосов
/ 15 октября 2019

Я написал небольшой скрипт для перемещения всех моих файлов .flac из dap в подпапки Artist, чтобы к ним можно было легко получить доступ с компьютера. Я использовал python3 в Ubuntu с такими библиотеками, как eyed3 и os. И сработало почти 30 песен (2 исполнителя). Итак, вот код:

    import os
    import eyed3

    os.chdir("/home/user/Music")
    cwd = os.getcwd()

    # print the current directory
    print("Current working directory is:", cwd)

    listOfFiles = os.listdir()
    artists = []

    # print(listOfFiles)

    try:
        for file in listOfFiles:
            aFile = eyed3.load(file)
            artist = aFile.tag.artist
            if artist not in a:
                artists.append(artist)
                os.mkdir(artist)
            os.rename(cwd + '/' + file, cwd + '/' + artist + '/' + file)
    except:
        print("not a file")

    print(artists)

Он создал 2 папки, как и должен. Но когда я пытался запустить этот скрипт на моем ПК с Windows, он выдает исключение и печатает «не файл». Вот консольный вывод без попытки / исключений:

Traceback (most recent call last):
  File "D:\GitHub\Song-Sorter\main.py", line 21, in <module>
    artist = aFile.tag.artist
AttributeError: 'NoneType' object has no attribute 'tag'

Итак, я попробовал это (следующая строка после artist = aFile.tag.artist):

print(type(artist))

и его вывод:

<class 'NoneType'>

В чем проблема? Не могу понять

1 Ответ

0 голосов
/ 15 октября 2019

Нашел решение. Я проверил этот скрипт на моей mp3-части библиотеки, и он работал нормально. Тогда я попробовал на flac части, и это не сработало, потому что eyed3 работает только с mp3. Поэтому я рекомендую использовать библиотеку Mutagen

...