首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AttributeError使用“导入日期”和"dateutil.parser.parse()“,但使用"from dateutil导入解析器”时没有问题

AttributeError使用“导入日期”和"dateutil.parser.parse()“,但使用"from dateutil导入解析器”时没有问题
EN

Stack Overflow用户
提问于 2014-04-30 09:55:12
回答 1查看 29.3K关注 0票数 43

我正在使用Python2.7.3中的 module。我只是想用:

代码语言:javascript
运行
复制
import dateutil
dateutil.parser.parse("01-02-2013")

但我有个错误:

代码语言:javascript
运行
复制
AttributeError: 'module' object has no attribute 'parser'

我检查了dateutil具有哪些属性:

代码语言:javascript
运行
复制
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__']

问题是,当我试图直接从parser导入dateutil时,它似乎确实存在:

代码语言:javascript
运行
复制
from dateutil import parser
print parser.parse("01-02-2013")
# output: 2013-01-02 00:00:00

from dateutil import parser之后,parser也神奇地出现在导入的dateutil本身中:

代码语言:javascript
运行
复制
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__', 'parser',
#          'relativedelta', 'tz']

注意,这个列表中仍然缺少一些其他属性(如rrule)。

有人知道怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-30 10:04:24

您还没有导入dateutil.parser。您可以看到它,但您必须以某种方式导入它。

代码语言:javascript
运行
复制
>>> import dateutil.parser
>>> dateutil.parser.parse("01-02-2013")
datetime.datetime(2013, 1, 2, 0, 0)

这是因为parser.pydateutil包中的一个模块。它是文件夹结构中的一个单独的文件。

回答您在评论中提出的问题,relativedeltatz在您的from dateutil import parser之后出现在名称空间中的原因是parser本身导入了relativedeltatz

如果您查看dateutil/parser.py的源代码,您可以看到导入。

代码语言:javascript
运行
复制
# -*- coding:iso-8859-1 -*-
"""
Copyright (c) 2003-2007  Gustavo Niemeyer <gustavo@niemeyer.net>

This module offers extensions to the standard Python
datetime module.
"""
... snip ...
from . import relativedelta
from . import tz
票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23385003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档