Seite 1 von 1

odfpy und \ im Dateiname

Verfasst: Donnerstag 2. Februar 2012, 14:22
von joh#
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?

Re: odfpy und \ im Dateiname

Verfasst: Donnerstag 2. Februar 2012, 14:37
von webspider
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.

Re: odfpy und \ im Dateiname

Verfasst: Donnerstag 2. Februar 2012, 14:51
von joh#
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)

Re: odfpy und \ im Dateiname

Verfasst: Donnerstag 2. Februar 2012, 14:58
von Hyperion
Womit arbeitet denn die Lib intern? Unicode? Evtl. fütterst Du das Dokument mit Bytestrings, obwohl Unicode gefordert war?

Re: odfpy und \ im Dateiname

Verfasst: Donnerstag 2. Februar 2012, 16:38
von joh#
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)