2017-08-20 16 views
0

Pythonはデフォルトのファイルコンテンツエンコーディングをシステムから読み込みます。 *(再)python 3スクリプト全体のデフォルトのファイルopen()エンコーディングを設定する方法は?

This S.O. question demonstrates that behavior

私は、スクリプトレベルでは、その世界的に上書きしたいと思います。私は "open()"を呼び出すたびに指定したくありません。例えば

私のWindowsはCP1255レガシーコードページを持っている場合は、私が何をしたい:

magic_set_file_open_encoding('utf8') 
data = open('file').read()  # contents assumed utf8 

  • これは非常に愚かである理由は:

    • のpython3ました"ユニコードのために設計された"。ではなぜ後ろの臆病はなぜですか?
    • Windowsのシステムエンコーディングは、LEGACY機能用であり、政府システムの基礎ではありません。
    • スクリプトの動作は、このように予測不可能で気まぐれです。

答えて

1

あなたはあなたのファイルのオープンを上書きすることができます

open = functools.partial(open, encoding='utf8') 

with open('somefile'): as f#will be your *new open func* 
    ... 
関連する問題