odfpy und \ im Dateiname

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
joh#
User
Beiträge: 139
Registriert: Freitag 6. November 2009, 13:16

Hallo,

wenn ich mit

Code: Alles auswählen

odfpy.OpenDocumentText().save('filename')
ein generiertes Dokument auf die Platte bringen will geht das.
Nur was wenn im Dateinamen ein backslash vorkommt, weil das
ganze bspw. in einem Unterverzeichnis landen soll. Dann beschwert
er sich:

Code: Alles auswählen

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 29: ordinal not in range(128)
Datei "h:\bin\python26\Lib\site-packages\odf\element.py", Zeile 256, in toXml
  f.write(_escape(unicode(self.data).encode('utf-8')))
Ebenso bei anderen nicht ascii-Zeichen. Was kann man da machen?
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Backslashes sind eigentlich Escape-Zeichen. In Python werden Pfade um diese Probleme zu vermeiden mit os.path konstruiert. Und es ist sowieso eine schlechte Idee non-ASCII-Zeichen im Pfad- oder Dateinamen zu haben, von daher würde ich sie lieber mit sicheren Zeichen ersetzen.
joh#
User
Beiträge: 139
Registriert: Freitag 6. November 2009, 13:16

webspider hat geschrieben:Backslashes sind eigentlich Escape-Zeichen. In Python werden Pfade um diese Probleme zu vermeiden mit os.path konstruiert. Und es ist sowieso eine schlechte Idee non-ASCII-Zeichen im Pfad- oder Dateinamen zu haben, von daher würde ich sie lieber mit sicheren Zeichen ersetzen.
ok, nur bei anderen non-ascii's (>127) streikt das OpenDocumentText().save
aber auch (auch im Dokumentinhalt)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Womit arbeitet denn die Lib intern? Unicode? Evtl. fütterst Du das Dokument mit Bytestrings, obwohl Unicode gefordert war?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
joh#
User
Beiträge: 139
Registriert: Freitag 6. November 2009, 13:16

Hyperion hat geschrieben:Womit arbeitet denn die Lib intern? Unicode? Evtl. fütterst Du das Dokument mit Bytestrings, obwohl Unicode gefordert war?
Daran wird's wohl liegen, die Bytes kommen aus einem .xls (Namen mit Umlauten)
Antworten