Ste*_*ker 36 python attributeerror python-2.7 python-dateutil
我正在使用Python 2.7.3中的dateutil模块.我只是想用:
import dateutil
dateutil.parser.parse("01-02-2013")
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
AttributeError: 'module' object has no attribute 'parser'
Run Code Online (Sandbox Code Playgroud)
我查了一下属性dateutil 确实具有:
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
# '__name__', '__package__', '__path__', '__version__']
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试直接导入parser时dateutil,它似乎确实存在:
from dateutil import parser
print parser.parse("01-02-2013")
# output: 2013-01-02 00:00:00
Run Code Online (Sandbox Code Playgroud)
之后from dateutil import parser,parser还神奇地出现在了进口dateutil本身:
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
# '__name__', '__package__', '__path__', '__version__', 'parser',
# 'relativedelta', 'tz']
Run Code Online (Sandbox Code Playgroud)
请注意,rrule此列表中仍缺少某些其他属性(如).
谁知道发生了什么?
msv*_*kon 57
你还没有导入dateutil.parser.你可以看到它,但你必须以某种方式导入它.
>>> import dateutil.parser
>>> dateutil.parser.parse("01-02-2013")
datetime.datetime(2013, 1, 2, 0, 0)
Run Code Online (Sandbox Code Playgroud)
那是因为它parser.py是dateutil包中的一个模块.它是文件夹结构中的单独文件.
回答你在评论中提出的问题,之所以出现relativedelta并tz出现在命名空间中from dateutil import parser是因为parser它本身就是导入relativedelta和tz.
如果查看源代码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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25377 次 |
| 最近记录: |