Wie kann ich die Dateisystem-Codierung über Python ändern?

>>> import sys >>> sys.getfilesystemencoding() 'UTF-8' 

Wie kann ich das ändern? Ich weiß, wie man die Standard-System-Codierung zu ändern.

 >>> reload(sys) <module 'sys' (built-in)> >>> sys.setdefaultencoding('ascii') 

Aber es gibt keine sys.setfilesystemencoding.

  • Sortierung der Datei mit Python auf Unix-System
  • Führen Sie eine C # -Anwendung aus dem Python-Skript aus
  • Wie man eine Funktion ausführt, wenn irgendetwas in einem dir mit Python Watchdog wechselt?
  • Wie kopiere ich ein Verzeichnis und seinen Inhalt zu einem vorhandenen Ort mit Python?
  • Dateisystemunabhängige Art der Verwendung von glob.glob und regulären Ausdrücken mit Unicode-Dateinamen in Python
  • Prüfen Sie, ob ein Pfad in Python gültig ist, ohne eine Datei am Ziel des Pfades zu erstellen
  • 2 Solutions collect form web for “Wie kann ich die Dateisystem-Codierung über Python ändern?”

    Die Dateisystemcodierung ist in vielen Fällen eine inhärente Eigenschaft des Betriebssystems. Es kann nicht geändert werden – wenn Sie aus irgendeinem Grund Dateien mit Namen erstellen müssen, die anders als die Dateisystemcodierung codiert sind, verwenden Sie keine Unicode-Zeichenfolgen für Dateinamen. (Oder wenn Sie Python 3 verwenden, verwenden Sie ein Bytes-Objekt anstelle eines Strings.)

    Einzelheiten finden Sie in der Dokumentation. Beachten Sie insbesondere, dass auf Windows-Systemen das Dateisystem nativ Unicode ist, so dass keine Konvertierung tatsächlich stattfindet und folglich ist es unmöglich, eine alternative Dateisystemcodierung zu verwenden.

    Es gibt zwei Möglichkeiten, es zu ändern:

    1) (linux-only) export LC_CTYPE=en_US.UTF8 vor dem Start der Python:

     $ LC_CTYPE=C python -c 'import sys; print(sys.getfilesystemencoding())' ANSI_X3.4-1968 $ LC_CTYPE=C.UTF-8 python -c 'import sys; print(sys.getfilesystemencoding())' UTF-8 

    Beachten Sie, dass LANG als Standardwert für LC_CTYPE dient, wenn es nicht gesetzt ist, während LC_ALL sowohl LC_CTYPE als auch LANG überschreibt)

    2) monkeypatching:

     import sys sys.getfilesystemencoding = lambda: 'UTF-8' 

    Beide Methoden lassen Funktionen wie os.stat akzeptieren Unicode (python2.x) Strings. Andernfalls heben diese Funktionen eine Ausnahme an, wenn sie nicht-ascii-Symbole im Dateinamen sehen.

    Python ist die beste Programmiersprache der Welt.