@Maxim045

Почему словарь не записывается в JSON-файл?

Функция directorychooser извлекает теги из одного MP3-файла, находящегося в выбранной папке. Эти теги записываются в словарь, который я планировал записывать в JSON-файл. Код, который будет ниже, завершается без ошибок, но JSON-файл остается пустым. Найти что-то похожее в гугле не смог. Пожалуйста, подскажите, в чем может быть проблема?
import mutagen, datetime, pygame, os, json
from mutagen.id3 import ID3
from tkinter import *
from tkinter.filedialog import askdirectory

root = Tk()
root.minsize(300,300)
    
def directorychooser(event):
    tags = {}
    paths = []
    directory = askdirectory()
    os.chdir(directory)

    for files in os.listdir(directory):
        if files.endswith(".mp3"):
            realdir = os.path.realpath(files)
            paths.append(realdir)

    path = paths[0]
    audiofile = mutagen.File(path)
    tags['Path to the File'] = path
    song_title = audiofile.tags.getall('TIT2')
    tags['Song Title'] = str(song_title[0])
    album_title = audiofile.tags.getall('TALB')
    tags['Album Title'] = str(album_title[0])
    song_artist = audiofile.tags.getall('TPE1')
    tags['Song Artist'] = str(song_artist[0])
    album_artist = audiofile.tags.getall('TPE2')
    tags['Album Artist'] = str(album_artist[0])
    year_of_publishing = audiofile.tags.getall('TDRC')
    tags['Year of Publishing'] = str(year_of_publishing[0])
    track_number = audiofile.tags.getall('TRCK')
    tags['Track Number'] = str(track_number[0])
    tags['Length'] = str(datetime.timedelta(seconds = audiofile.info.length))
    tags['Bitrate'] = audiofile.info.bitrate
    
    with open("tags.json", "w") as t:
        json.dump(tags, t)

choose_directory = Button(root,text = 'Choose Directory')
choose_directory.pack()
choose_directory.bind("<Button-1>", directorychooser)

root.mainloop()
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
npanuhin
@npanuhin
Вы переходите в другую директорию:
os.chdir(directory)
Соответственно там файл и создаётся. (Можете проверить)

Вариант решения: Запомнить директорию вызова и перед созданием файла сделать
os.chdir(exec_directory)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы