Добавление тегов ID3 в Mutagen с помощью циклического перемещения по каталогу
(Я абсолютный новичок в области кодирования, это мой первый в истории проект.)
Я пытаюсь использовать Mutagen в Windows 10 для циклического просмотра каталога и добавления номеров треков тегов ID3 для каждого из обнаруженных файлов. К сожалению, кажется, что Мутаген испытывает проблемы с распознаванием указанных файлов. Вот как выглядит мой код:
import os
import mutagen
import mutagen.id3
from mutagen.id3 import ID3
from mutagen.mp3 import MP3
from mutagen.easyid3 import EasyID3
files = os.listdir(r'C:\Users\Kurt\Music\Music\Brad Paisley\python test')
count = 0
for file in files:
path = file
try:
tag = EasyID3(path)
except:
tag = mutagen.File(path, easy=True)
tag.add_tags()
tag['tracknumber'] = count + 1
tag.save(v2_version=3)
file.save()
count = count + 1
По сути, это связано со многими другими вещами, которые я нашел, но при запуске я получаю огромную ошибку, о которой я опубликую первые несколько строк здесь:
Traceback (most recent call last):
File "C:\Users\Kurt\AppData\Local\Programs\Python\Python36-32\lib\site-packages\mutagen\_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'americansaturdaynight 01- American Saturday Night - Copy.mp3'
Как я уже сказал, я абсолютный новичок, поэтому я не совсем понимаю, что означает большинство из этого, хотя кажется, что это означает, что выбранный мной каталог (или файлы в каталоге?) Не существует, что он очень делает. Кто-нибудь может мне помочь с этим?
1 ответ
Ваша проблема с пути - os.listdir()
перечисляет только файлы / каталоги, но не их пути, поэтому, если вы не выполняете сценарий по указанному пути, Python не сможет найти файл.
Вы всегда можете определить свой домашний путь как:
source_dir = r"C:\Users\Kurt\Music\Music\Brad Paisley\python test"
for name in os.listdir(source_dir): # iterate over all files/directories in source_dir
if name[-4:].lower() != ".mp3": # ignore non-mp3 files
continue
path = os.path.join(source_dir, name) # build the whole file path
# you can also check with os.path.isfile(path) to make sure it's a file you're processing
# etc. (your mutagen update logic)
Вы также можете посмотреть в glob.glob()
для прямого списка каталогов с примененным шаблоном фильтра расширений, так что вам не нужно выполнять ручную проверку самостоятельно.