ich möchte einen Ordner mit Musik einlesen um zu wissen welche Interpreten und Alben der Interpreten vorhanden sind. Das einlesen der Ordner und anschließende Ausgabe in eine Textdatei funktioniert mittlerweile Problemlos. Jetzt möchte ich natürlich das ganze auch auf die Konsole ausgeben und da habe ich wieder das Problem mit dem Encodieren/Decodieren. Bis jetzt habe ich es zwar geschafft, dass beim einlesen und bei der Ausgabe in die Konsole keine Fehlermeldungen kommen, aber die Umlaute werden falsch dargestellt. Die Umfangreiche ANleitung (http://www.python-forum.de/viewtopic.php?t=5095) hat mir leider nur begrenzt geholfen, da es für Python 2.x gilt und es da anscheinend mehrere Unterschiede gibt. Ich habe versucht mir das Encoding vom Dateisystem anzuzeigen "sys.getfilesystemencoding()" und für die Ausgabe zu decodieren "sys.stdout.encoding". Was mache ich falsch?
Danke
Hier ist mein bisheriger Code:
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
__author__ = 'pbergaus'
#cp1251
import os
import codecs
import sys
import locale
print(sys.getfilesystemencoding())
print(sys.stdout.encoding)
os.chdir("M:\\") #Startlaufwerk
music_dir = os.getcwd() #Arbeitsverzeichnis
# print("Aktuelles Verzeichnis: ", music_dir)
temp_paths = os.listdir(music_dir)
dir_counter = 0
for a in temp_paths:
if os.path.isdir(a) == True:
dir_counter= dir_counter+1
print(dir_counter)
i = 0
f = open("MusikInterpreten_Alben_topdown.txt","w", encoding="utf8")
for dirName, subDirList, fileList in os.walk(music_dir, topdown=True):
d=dirName.encode('utf-8', 'ignore')
e=d.decode(sys.stdout.encoding)
print("{0} {1}".format(i,e))
# if dirName in 'Compilations': #Funktioniert im Moment nicht!
# print("Found Compilations")
# f.write("Compilations: {0}".format(subDirList) + "\n")
# continue
f.write("Interpret: {0}".format(dirName) + " Album: {0}".format(subDirList) + "\n")
i += 1
if i >= 2: #So wird nur die erste Ebene betreten.
del subDirList[:]
f.close()