Hallo,
ich habe folgendes Problem:
mit meinem python-script lade ich eine xml-Datei aus dem Internet. Die XML-Datei ist UTF-8 codiert. Die XML-Datei parse ich mit libxml2.parseDoc und hole mir daraus mit
xpath (xpathEval) u.a. einen Namen und eine URL.
Nun erstelle ich anhand des Namens einen kompletten Pfad, hol mir die Datei und speichere sie im Dateisystem unter dem erstellten Pfad.
Das funktioniert auch zu 98% immer, außer wenn im Dateinamen Umlaute, bzw Sonderzeichen enthalten sind.
z.B. der zusammengesetzte Pfad lautet:
/platte/Aufnahmen/Serien/Magnum/Magnum (Saras Rückkehr / Kalter Krieg unter heißer Sonne).mp4
Das wird auch so in der Console korrekt mit Umlauten etc angezeigt
Wenn ich dann an die Stelle Download komme, kommt der Fehler:
Traceback (most recent call last):
File "xxx.py", line 564, in <module>
aufnahme.downloadMovie()
File "xxx.py", line 286, in downloadMovie
urllib.urlretrieve( url, fullpath )
File "/usr/lib/python2.6/urllib.py", line 93, in urlretrieve
return _urlopener.retrieve(url, filename, reporthook, data)
File "/usr/lib/python2.6/urllib.py", line 243, in retrieve
tfp = open(filename, 'wb')
IOError: [Errno 2] No such file or directory: '/platte/Aufnahmen/Serien/Magnum/Magnum (Saras R\xc3\xbcckkehr / Kalter Krieg unter hei\xc3\x9fer Sonne).mp4'
Und ich weiß nicht, was ich tun soll. Hab schon glaube ich alles ausprobiert mit encode und decode.
Ich weiß nicht weiter.
Kann mir da jemand helfen?
Komischerweise habe ich bereits mit diesem Code Dateien heruntergeladen, die Umlaute im Dateinamen haben.
noch ein encoding-Problem?
@buthor: Speziell in diesem Fall dürfte das weniger mit Umlauten zu tun haben, sondern dass da ein Schrägstrich im Dateinamen ist. Der Pfad beschreibt ja die Datei ' Kalter Krieg unter heißer Sonne).mp4' im Verzeichnis '/platte/Aufnahmen/Serien/Magnum/Magnum (Saras Rückkehr /'
@buthor: Und eventuell noch andere Zeichen, die ein Dateisystem eventuell nicht mag.
@buthor: Gibt es einen besondere Grund dafür, dass Du libxml verwendest? Im Allgemeinen gibt es bessere, weil komfortablere Python-APIs zur XML-Verarbeitung, beispielsweise ElementTree in der Standardbibliothek, oder lxml.
Nein einen besonderen Grund gibt es nicht.
Bin noch relativ neu im python programmieren.
Und wie das so ist als Einsteiger: probieren-googlen-lesen-fragen.
Und wenn man dann was besseres findet: ändern.
Danke für den Tipp. Ich werds mal ausprobieren.
Bin noch relativ neu im python programmieren.
Und wie das so ist als Einsteiger: probieren-googlen-lesen-fragen.
Und wenn man dann was besseres findet: ändern.
Danke für den Tipp. Ich werds mal ausprobieren.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich denke genau diese Erfahrung macht deutlich, wie gut Leonidas' Idee vom "Unfuck the Wiki"-Sprint ist. Denn unsere Modul-Liste ist teilweise veraltet und imho auch zu "kurz". Wie oft schlagen wie hier Unwissenden Module (und APIs) vor (etree -> lxml, http -> requests, ...)? Natürlich ist die Sichtbarkeit des Wikis nicht hoch, aber wenn man dort auf etwas aktuelles verweisen könnte, wäre das imho schon ein Fortschritt.buthor hat geschrieben: Bin noch relativ neu im python programmieren.
Und wie das so ist als Einsteiger: probieren-googlen-lesen-fragen.
... und sobald Inyoka kommt, erhöht sich ja auch die Sichtbarkeit... SCNR
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert