Ich programmiere ein kleines Skript, das Metadaten aus einer Audiodatei erhält und eine Zeichenfolge mit den gewünschten Werten erstellt. Ich weiß, dass ich etwas falsch mache, aber ich bin mir nicht sicher, warum, aber es ist wahrscheinlich die Art, wie ich die If's iteriere. Wenn ich den Code ausführen:Verstehen, warum dieser Python-Code nach dem Zufallsprinzip funktioniert
import os, mutagen
XPATH= "/home/xavier/Code/autotube/tree/def"
DPATH="/home/xavier/Code/autotube/tree/down"
def get_meta():
for dirpath, directories,files in os.walk(XPATH):
for sound_file in files :
if sound_file.endswith('.flac'):
from mutagen.flac import FLAC
metadata = mutagen.flac.Open(os.path.join(dirpath,sound_file))
for (key, value) in metadata.items():
#print (key,value)
if key.startswith('date'):
date = value
print(date[0])
if key.startswith('artist'):
artist = value
#print(artist[0])
if key.startswith('album'):
album = value
#print(album[0])
if key.startswith('title'):
title = value
#print(title[0])
build_name(artist,album,title) # UnboundLocalError gets raised here
def build_name(artist,album,title):
print(artist[0],album[0],title[0])
ich das gewünschte Ergebnis oder einen Fehler, nach dem Zufall:
ERGEBNIS:
1967 Ravi Shankar & Yehudi Menuhin West Meets East Raga: Puriya Kalyan
ERROR:
Traceback (most recent call last):
File "<stdin>", line 39, in <module>
File "<stdin>", line 31, in get_meta
build_name(artist,album,title)
UnboundLocalError: local variable 'album' referenced before assignment
add 'album = ""' 'vor for' Schleife – Arman
Wenn man sich die' if' Blöcke schauen Sie in Ihrem 'for' Schleifen, einige Iterationen ordnen 'album' zu; einige versuchen und benutzen 'album'. Wenn die Bedingungen, die zu dem Versuch führen, "Album" zu verwenden, vor den Bedingungen auftreten, die zur Zuweisung von "Album" führen, versuchen Sie, eine nicht zugewiesene Variable zu verwenden. – khelwood
Da Sie nicht 'zufällig importieren' haben, würde ich überrascht sein, wenn Ihr Code * zufällig * funktioniert, obwohl es * unerwartet funktionieren könnte * –