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.

  • Wie konvertiere ich base64 / radix64 öffentlichen Schlüssel zu einem pem-Format in Python
  • Python: Konvertieren Sie String von UTF-8 nach Latein-1
  • Lesen Sie eine Textdatei mit Nicht-ASCII-Zeichen in einer unbekannten Codierung
  • UnicodeEncodeError: 'charmap' Codec kann nicht codieren - Zeichenkarten zu <undefined>, Druckfunktion
  • Lamson: Postadressenformat
  • Python aus der Datei lesen und nicht-ascii Zeichen entfernen
  • Fixing korrupte Codierung (mit Python)
  • Python repariert eine gebrochene Codierung
  • 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.