Seite 1 von 1
os.rename - Unicode
Verfasst: Dienstag 20. April 2004, 15:58
von michael070380
Hallo
habe folgendes Problem:
ich will unter Linux eine Datei umbenenen mit Umlauten. Wenn ich die Datei umbenannt habe dann habe ich eine Datei wie z.B. aufräumen statt aufräumen.
Weiss jemand wie ich dem os.rename den latin1-Zeichensatz beibringen kann, oder geht der os.rename nur mit Unicode?
Was ist eigentlich wenn die Quelldatei schon Umlaute enthält - findet er dann auch die Datei?
Gruß
Michael B.
Verfasst: Dienstag 20. April 2004, 18:28
von Dookie
Hi michael070380,
sys.getfilesystemencoding() gibt dir das Encoding des Filesystem aus, na was auch sonst.
Code: Alles auswählen
import sys
filename = u"Dateiname_mit_Umlauten_äöü".encode(sys.getfilesystemencoding())
codiert den Dateinamen in dem im System eingestellten Zeichensatz.
Gruß
Dookie
Verfasst: Dienstag 20. April 2004, 19:00
von michael070380
Hi Dookie
habe jetzt leider auf meinem Linux nur eine Python-Version 2.2. Deshalb habe ich es auf meinem Windows-System (Python 2.3.2) getestet und habe immer noch folgende Fehler:
>>>
>>> filename = u"Dateiname_mit_Umlauten_äöü".encode(sys.getfilesystemencoding())
>>> rename ("2", "1")
>>> rename ("1", filename)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
OSError: [Errno 22] Invalid argument
>>> print filename
Dateiname_mit_Umlauten_??ü
>>>
Weiss nicht was ich mit dieser Fehlermeldung anfangen soll. Auch die Fehlerhafte Ausgabe von print filename wundert mich.
P.S. Zeile rename ("2", "1") diente als Test für Zugriffsrechte etc. - Befehl wurde erfolgreich ausgeführt.
Gruß
Michael B.

Verfasst: Dienstag 20. April 2004, 19:50
von Dookie
was sagt den print sys.getfilesystemencoding()?
Gruß
Dookie
Verfasst: Dienstag 20. April 2004, 20:16
von Gast
>>> print sys.getfilesystemencoding()
mbcs
Verfasst: Dienstag 20. April 2004, 20:17
von michael070380
Uups... nicht eingelogt...
>>> print sys.getfilesystemencoding()
mbcs
Gruß
Michael B.
Verfasst: Dienstag 20. April 2004, 20:46
von Dookie
versuchs mal mit
Code: Alles auswählen
filename = u"Dateiname_mit_Umlauten_äöü".encode("latin-1")
Gruß
Dookie
Verfasst: Dienstag 20. April 2004, 20:50
von Milan
Hi. mbcs hab ich auch unter Windows... wie rufst du denn Python auf? Im Dos-Fenster oder als IDLE? Im DOS-Fenster ist es ja logisch, dass es nicht gehen kann, weil da als Zeichensatz ASCII gilt, während das "restliche Windows ANSI verwendet. Tja, das zu beheben ist nun ein Dilemma. Ich kenn mich nun leider wirklich nicht gut genug mit den Codecs aus, aber vielleicht kann dir da Dookie helfen
Milan
Verfasst: Dienstag 20. April 2004, 20:55
von michael070380
er macht zwar einen rename aber die Datei sieht dann auf der Kommandozeile so aus:
Dateiname_mit_Umlauten_""?
Vom Explorer will ich gar nicht erst reden
Gruß
Michael B.
Verfasst: Dienstag 20. April 2004, 20:58
von michael070380
Hi Milan
ich nutze Python auf der Kommandozeile. Das ist, wie oben schon erwähnt, aber nur eine "Test-Umgebung". Für den eigentlichen Einsatz brauche ich den Befehl unter Linux.
Gruß
Michael B.
Verfasst: Dienstag 20. April 2004, 21:07
von Dookie
also bei mir unter linux klappts
Code: Alles auswählen
>>> import sys
>>> print u"Text__mit_Umlauten_öäü".encode(sys.getfilesystemencoding())
Text__mit_Umlauten_öäü
>>>
mit Windows kenn ich mich nicht aus.
Gruß
Dookie
Verfasst: Mittwoch 21. April 2004, 19:18
von michael070380
Ja unter Linux klapt es.
Danke und Gruß
Michael B.