程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用“import dateutil”和“dateutil.parser.parse()”时的AttributeError,但在使用“from dateutil import parser”时没有问题

发布于2019-08-27 08:52     阅读(1873)     评论(0)     点赞(15)     收藏(0)


我正在使用Python 2.7.3中dateutil模块我只是想用:

import dateutil
dateutil.parser.parse("01-02-2013")

但是我收到了一个错误:

AttributeError: 'module' object has no attribute 'parser'

我查了一下属性dateutil 确实具有:

print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__']

问题是,当我尝试直接导入parserdateutil,它似乎确实存在:

from dateutil import parser
print parser.parse("01-02-2013")
# output: 2013-01-02 00:00:00

之后from dateutil import parserparser还神奇地出现在了进口dateutil本身:

print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
#          '__name__', '__package__', '__path__', '__version__', 'parser',
#          'relativedelta', 'tz']

请注意,rrule此列表中仍缺少某些其他属性(如)。

谁知道发生了什么?


解决方案


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

>>> 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,可以看到导入。

# -*- 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


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/62618/0ab377b78546d06e10b3/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)