有没有办法改变Python的open()默认文本编码?

use*_*ser 9 python locale default utf-8 character-encoding

我可以跨平台方式更改默认(2.7)文本编码吗?open() io.open()

所以我不需要每次都指定open(...,encoding='utf-8').

在文本模式下,如果编码未指定使用的编码是与平台相关的:locale.getpreferredencoding(False)被称为获取当前的本地编码.

虽然文档没有指定如何设置首选编码.该功能在locale模块中,所以我需要更改区域设置?是否有任何可靠的跨平台方式来设置UTF-8语言环境?它会影响除默认文本文件编码以外的任何其他内容吗?

或者区域设置更改是危险的(可能会破坏某些东西),我应该坚持自定义包装,例如:

def uopen(*args, **kwargs):
    return open(*args, encoding='UTF-8', **kwargs)
Run Code Online (Sandbox Code Playgroud)

Pet*_*ton 7

不要更改语言环境或首选编码,因为;

  • 它可能会影响您代码的其他部分(或您正在使用的库);和
  • 不清楚您的代码取决于open使用特定的编码。

相反,使用一个简单的包装器:

from functools import partial
open_utf8 = partial(open, encoding='UTF-8')
Run Code Online (Sandbox Code Playgroud)

您还可以为所有关键字参数指定默认值(如果需要)。