Добавление тегов ID3 ​​в Mutagen с помощью циклического перемещения по каталогу - PullRequest
0 голосов
/ 16 мая 2018

(я абсолютный новичок с точки зрения кодирования, это мой первый проект).

Я пытаюсь использовать 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 Ответ

0 голосов
/ 16 мая 2018

Ваша проблема связана с путем - в 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() список прямых каталогов с примененным шаблоном фильтра расширений, чтобы вам не приходилось выполнять ручную проверку самостоятельно.

...