9

在给我的家庭作业示例代码中,出现了这一行:

date_format = locale.nl_langinfo(locale.D_FMT)

但在 Windows 中,该行返回以下错误:

File "C:\Users\Shadark\Dropbox\IHM\P3\p3_files\www\cgi-bin\todolist.py", line 11, in <module>
date_format = locale.nl_langinfo(locale.D_FMT)
AttributeError: 'module' object has no attribute 'nl_langinfo'

我已经阅读了有关使用localeconv的信息,但我只阅读了有关使用货币或数字的信息。关于我的代码示例或其他类型的功能的用途有什么想法吗?

提前致谢。

4

2 回答 2

6

您的问题可能是locale.nl_langinfoWindows Python 2.7.x 中似乎不可用的事实(我在我的 Windows 64 位 Python 2.7.3 副本中没有看到它)。查看http://docs.python.org/2.7/library/locale.html#locale.nl_langinfo上的文档,他们特别说:

此功能并非在所有系统上都可用,并且可能的选项集也可能因平台而异。

一旦您使用以下内容设置了语言环境:

locale.setlocale(locale.LC_ALL, 'english')

然后调用 some_date.strftime() 将使用正确的语言环境特定格式和字符串。因此,如果您想要字符串格式的日期,请调用some_date.strftime('%x')替换%x%X时间或%c两者。此处记录了 strftime 格式的完整列表。

>>> d = datetime.datetime.now()
... for loc in ('english', 'german', 'french'):
...     locale.setlocale(locale.LC_ALL, loc)
...     print loc, d.strftime('%c -- %x -- %X -- %B -- %A')
english 11/15/2012 4:10:56 PM -- 11/15/2012 -- 4:10:56 PM -- November -- Thursday
german 15.11.2012 16:10:56 -- 15.11.2012 -- 16:10:56 -- November -- Donnerstag
french 15/11/2012 16:10:56 -- 15/11/2012 -- 16:10:56 -- novembre -- jeudi
14: 'French_France.1252'
于 2012-11-15T16:30:41.903 回答
1

尝试从测试目录中删除任何预编译文件。

如果问题仍然存在,请尝试重新安装您的编译扩展。可能是安装有问题

于 2012-11-15T16:22:28.790 回答