您的语言环境是否在您的脚本中设置?如果您致电locale.getlocale()
,结果是否是预期的?以下比较:
>>> import locale
>>> locale.getlocale()
(None, None)
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2010, 8, 9)
>>> today.strftime('%x')
'08/09/10'
>>> locale.setlocale(locale.LC_ALL, "de_DE.UTF-8")
'de_DE.UTF-8'
>>> locale.getlocale()
('de_DE', 'UTF8')
>>> today.strftime('%x')
'09.08.2010'
需要注意的是有缺陷的datetime
模块中,因为在底层的C库错误的居多。例如,在我的安装(最新的OS X)上,格式化字符串%z
完全不可用。
在Windows上,可用于setlocale()
的语言环境字符串的语法遵循与* nix平台上不同的语法。列表是here on MSDN。
如果您只是希望将您的脚本设置为用户安装的任何默认语言环境(在我的英国英语中),则只需在主脚本的开头执行此操作即可。不这样做的模块,因为它覆盖了一个全局变量:
>>> locale.setlocale(locale.LC_ALL, "")
'en_GB.UTF-8'
来自https://wiki.debian.org/Locale:“强烈建议不要使用LC_ALL,因为它会覆盖所有内容,请仅在测试时使用,并且不要将其设置为启动文件。” – dstonek 2018-03-07 18:49:20