Folgende Ausgangssituation:
Ich digitalisiere meine Vinyl-Sammlung und habe eine LP-Seite als .wav Datei vorliegen, diese splitte ich ich mit Hilfe des Kommandozeilen-Tools "sox".
Jetzt möchte ich wissen wie weit die Verarbeitung schon ist, mein Ansatz:
Code: Alles auswählen
def progress(path,total):
changed = False
len_old = len(os.listdir(path))
while len_old < total:
if changed:
print u"\r progress: {0}%".format(l*100/total)
counter = 0
time.sleep(1)
len_current = len(os.listdir(path))
if len_old != len_current:
changed = True
len_old = len_current
else:
changed = False
counter += 1
if counter > 10:
break
return
def sox_split(project_path, orig_path, track_length, factor = 0):
prog = threading.Thread(target = progress, args=(project_path,track_length))
prog.start()
sox.split(project_path, orig_path, factor)
print u"splitted!"
return
Beim ersten Aufruf klappt auch alles prima.
Falls beim splitten zu viel oder zu wenig Files entstehen, rufe ich die sox_split() noch einmal mit einem anderen "factor" auf. Dann funktionert die Ausgabe von progress() nicht richtig (wenn ich mich recht erinnere gibt progress() dann genau 1x "progress: 100%" aus und dann nichts mehr). Hab im Moment leider keine bessere Fehlerbeschreibung, da ich grad nicht am Digitalisieren bin und der letzte Fehler schon etwas her ist. Aber evtl. habt ihr zu dem Code an sich schon Ideen?
Auch wenn ich auf das Ende des Threads warte ändert sich nichts:
Code: Alles auswählen
def sox_split(project_path, mono_path, track_length, factor = 0):
prog = threading.Thread(target = progress, args=(project_path,track_length))
prog.daemon = True
prog.start()
sox.split(project_path, mono_path, factor)
while prog.is_alive():
time.sleep(1)
print u"splitted!"
return