我正在学习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。
我不知道怎么办,请给我一些建议。感谢。
答案 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