Stringkonvertierung mal wieder

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
R6
User
Beiträge: 2
Registriert: Montag 8. Februar 2010, 10:44

Hi , ich würde gerne eine Liste meiner MP3 machen. Leider schreibt dieser in der Ausgabedatei immer die Python-Escapes (hier \xb4 anstatt '). Hab schon einiges probiert (encode, decode, unicode etc). Nichts hat gefunzt. Was mache ich falsch :

Dateiinhalt:
TAGI\xb4m going slightly mad\x00\x00\x00\x00\x00\x00\x00 ...\x00\x02\r]

Code: Alles auswählen

auszug_tag = ''
for titel in auswahl:
    dateipfad = pfad+titel
    datei_offen = open(dateipfad,'rb')
    inhalt =  str(datei_offen.readlines())
    datei_offen.close()
    laenge = len(inhalt)

    tag_pos = inhalt.rfind('TAG')
    tag_ende = inhalt.rfind(']')

    auszug_tag = inhalt[tag_pos:tag_ende]
    print auszug_tag
:lol:
IoI
User
Beiträge: 68
Registriert: Dienstag 1. Dezember 2009, 11:39

warum nimmst du kein modul, was ID3-Tags auslesen kann? Man muss doch nicht immer das rad neu erfinden.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Das ist falsch:

Code: Alles auswählen

inhalt =  str(datei_offen.readlines())
Spiele das ganze mal in einer interaktiven Shell durch. Was du da machst ist die "Representation" der Liste als String abzuspeichern.


Deinen Code grundlegend übernommen und korrigiert (ungetestet):

Code: Alles auswählen

import os

for titel in auswahl:
    dateipfad = os.path.join(pfad, titel) # Pfade nicht mit + zusammenbauen!
    with open(dateipfad,'rb') as datei_offen: # wenn man with verlässt wird die Datei immer geschlossen
        for line in datei_offen: #man kann mit for über eine offene Datei iterieren
            tag_pos = line.rfind('TAG')
            tag_ende = line.rfind(']')
            auszug_tag = line[tag_pos:tag_ende]
            print auszug_tag
Edit: Moment mal was mache ich da eigentlich?! MP3 Dateien halten ihre Metadaten bestimmt nicht Zeilenweise. Ich weiß es allerdings nicht und habe auch keine Zeit das nachzugucken.
R6
User
Beiträge: 2
Registriert: Montag 8. Februar 2010, 10:44

Spiele das ganze mal in einer interaktiven Shell durch. Was du da machst ist die "Representation" der Liste als String abzuspeichern.

Stimmt das ist unschön. Aber vielen Dank für die "überarbeitete" Struktur.

Das Problem mit der Zeichencodierung konnte ich lösen. Hab alles in ein einheitliches Zeichenformat gebracht und es klappte.
Antworten