AttributeError:模块'datetime'没有属性'now'

时间:2018-06-01 08:43:17

标签: datetime module attributes attributeerror

我正在学习Python。现在我遇到了一些问题。 下面是我的代码,该视频来自运行良好的视频。

导入日期时间

打印(类型(日期时间))

d1 = datetime.datetime.now()

打印(D1)

当我使用Pycharm&运行代码时崇高我得到了错误。 以下是sublime的错误信息

回溯(最近一次调用最后一次):

文件“D:\ programming \ python \ datetime.py”,第1行,in     导入日期时间

文件“D:\ programming \ python \ datetime.py”,第4行,in     d1 = datetime.datetime.now()

AttributeError:module'datetime'没有属性'now'

下面是pycharm的错误信息

D:\ programming \ python \ venv \ Scripts \ python.exe C:\ Program Files \ JetBrains \ PyCharm 2018.1.2 \ helpers \ pydev \ pydevconsole.py“63029 63030 回溯(最近一次调用最后一次):

文件“C:\ Program Files \ JetBrains \ PyCharm 2018.1.2 \ helpers \ pydev \ pydevconsole.py”,第4行,     来自_pydev_imps._pydev_saved_modules导入线程

文件“C:\ Program Files \ JetBrains \ PyCharm 2018.1.2 \ helpers \ pydev_pydev_imps_pydev_saved_modules.py”,第21行,in     将xmlrpc.client导入为xmlrpclib

文件“D:\ programming \ Anoconda3 \ lib \ xmlrpc \ client.py”,第134行,     来自datetime import datetime

文件“D:\ programming \ python \ datetime.py”,第4行,in     d1 = datetime.datetime.now()

AttributeError:模块'datetime'没有属性'now' 处理以退出代码1完成

此代码在IDLE和cmd下运行良好。当我只编码 print(type(datetime))时,它运行良好,但是打印双倍类型的datetime。

我不知道怎么办,请给我一些建议。感谢。

7 个答案:

答案 0 :(得分:7)

只需导入_datetime而不是datetime

示例代码:

import _datetime

today = _datetime.date.today()

print(today)

答案 1 :(得分:4)

检查您是否不使用通配符导入

from datetime import datetime, timedelta
from some_lib import *

some_lib 可能还有另一个日期时间导入,可以重新定义您的日期时间

# in some_lib:
import datetime

答案 2 :(得分:4)

   import datetime
   datetime.datetime.now()

尝试使用它,它可能会起作用

答案 3 :(得分:2)

编辑**: 用户自己的自定义datetime.py模块覆盖了标准库,下面的信息仍然有助于理解为什么会发生这种情况。导入算法首先检查您的直接目录。您可以使用以下命令检查模块文件路径:

print a_module.__file__

欢迎来到编程的狂野世界。所以,我不确定我是否完全理解你的问题,所以我会尝试打破一些事情,为你留下讨论空间。

导入日期时,导入名为模块的内容。在没有详细介绍模块的情况下,通常称为命名空间,它们用于在层次结构下创建属性分离,因此您不会在导入时意外覆盖其他代码。你可以在这里阅读更多关于它的内容:

https://docs.python.org/3/tutorial/modules.html

  

datetime模块提供用于操作日期和时间的类   以简单和复杂的方式。而日期和时间算术是   支持,实施的重点是有效的属性   提取输出格式和操作。相关的   功能,另请参阅时间和日历模块。

导入它并在其上运行类型方法时,您应该看到以下结果:

>>>import datetime
>>> type(datetime)
<class 'module'>

内置类型方法文档说明如下:

  

4.12.6。输入对象   类型对象表示各种对象类型。内置函数type()访问对象的类型。类型没有特殊操作。标准模块类型定义了所有标准内置类型的名称。

当您明确打印该输出时,结果将是相同的:

 >>> print(type(datetime))
<class 'module'>

模块在导入时公开属性。您正在访问的属性是datetime模块datetime属性,它是一个恰好具有相同名称的。因此,当您访问它时,它看起来像datetime.datetime

该类支持名为“now”的方法(也是类的属性,而不是模块)。因此,当您访问该方法时,它看起来像datetime.datetime.now()来调用它。

如果你想在导入时简化这个heirarchy,你可以澄清你只想要datetime类来自datetime模块:

from datetime import datetime
#and the access its now method simpler
d1 = datetime.now()

这可能有助于属性访问问题,这可能是一个混乱的问题。如果您想更多地澄清您的问题,请随时这样做!

我希望这会有所帮助。

答案 4 :(得分:0)

就我而言,我不小心有两个导入行。删除第二个导入修复了问题。

from datetime import datetime
import datetime  # <-- Remove to make it work!

datetime.now()

答案 5 :(得分:0)

import datetime

x = datetime.datetime.now()

print(x)

好的,所以我遇到了同样的问题,并且从这里和那里进行了搜索。我所做的只是将程序名称从 datetime.py 更改为 datetime example.py。和 kaboom 它奏效了。

答案 6 :(得分:0)

我也遇到过这个错误,经过几次搜索我发现了问题。

我将自己的文件命名为 datetime.py,因此在导入 datetime 模块时,python 搜索了直接目录,最终导入了相同的文件,当然它找不到任何 now() 方法,因此抛出错误。

解决方案 - 将当前文件名从 datetime.py 更改为其他名称或使用:
import _datetime