如何(重新)为整个python 3脚本设置默认文件open()编码?

时间:2017-08-20 18:31:48

标签: python-3.x encoding utf-8

Python从系统中读取默认文件内容编码。 *

This S.O. question demonstrates that behavior

我想在脚本级别全局覆盖它。我不想在每次调用" open()"。

时指定它

例如,如果我的Windows有一个CP1255遗留代码页,我想这样做:

magic_set_file_open_encoding('utf8')
data = open('file').read()     # contents assumed utf8
  • 为什么这很愚蠢:

    • python3是"专为unicode"而设计。那么为什么落后的懦弱呢?
    • 视窗'系统编码用于LEGACY功能,而不是政府系统的基础。
    • 脚本'因此行为是不可预测和异想天开的。

1 个答案:

答案 0 :(得分:0)

您可以覆盖文件的打开

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

with open('somefile'): as f#will be your *new open func*
    ...

另一种不那么hacky方式和更全面的方法可能是:

import locale
locale.setlocale(locale.LC_ALL, 'en_US.utf-8')