python - 执行练习代码时,即使在 datetime 模块之后也会出现错误

标签 python python-3.x

from datetime import *
import os
stats=os.stat('aaa.txt')
print('File size in bytes:',stats.st_size)
print('File last Accessed Time:',datetime.fromtimestamp(stats.st_atime))
print('File last Modified Time:',datetime.fromtimestamp(stats.st_mtime))

即使在导入 datetime 模块后,我也会收到类似

的错误
File size in bytes: 0
Traceback (most recent call last):
  File "F:/Python/Directories/datetime.py", line 1, in <module>
    from datetime import *
  File "F:\Python\Directories\datetime.py", line 5, in <module>
    print('File last Accessed Time:',datetime.fromtimestamp(stats.st_atime))
NameError: name 'datetime' is not defined

将导入语句编辑为:-

import datetime

(而不是)

from datetime import *

我遇到了错误

File size in bytes: 0
Traceback (most recent call last):
  File "F:/Python/Directories/datetime.py", line 2, in <module>
    import datetime
  File "F:\Python\Directories\datetime.py", line 6, in <module>
    print('File last Accessed Time:',datetime.fromtimestamp(stats.st_atime))
AttributeError: module 'datetime' has no attribute 'fromtimestamp'

最佳答案

您已将模块命名为 datetime,它隐藏了 stdlib datetimefrom datetime import * 然后从 自身 导入所有内容,其中不包括名为 datetime 的对象,从而导致 NameError.

更改模块的名称。


Python 中的导入路径由 sys.path 指定(按顺序)。 sys.path[0] 始终是 '.',即当前工作目录。

实际上,这意味着如果您创建一个扩展名为 .py 且与标准库包/模块同名的文件,它将取代 stdlib 和您的 import 该包中的 s 将更喜欢您的模块而不是 stdlib 模块。

在您的特定情况下,您的 datetime.py 运行了 from datetime import * 并尝试从自身导入所有内容,而不是从 stdlib datetime . Python 足够聪明,不会为已经加载的模块重新运行 import 语句,否则你会得到一个无限循环,你的模块会导入它自己,它看到它应该导入它自己所以它导入它自己,它看到它应该导入本身所以它导入自己,它看到....

然而,当您尝试使用 datetime 导入实际某事时,不陷入无限循环无济于事,因为您希望看到 stdlib datetime 及其所有相关成员,但您只会看到您已经在自己的 datetime.py 中定义的内容!

关于python - 执行练习代码时,即使在 datetime 模块之后也会出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53204000/

相关文章:

python - 在 python 中导入 beautifulsoup

python - Odoo - 为特定用户隐藏按钮

python - 从 Python 和 impacket 获取 TCP 数据包有效载荷

python - 2个指向彼此的对象之间的Django ManyToManyField

python - 仅符号字符串检测

python - pygame 错误 : "ImportError: No module named ' pygame'"

python - 在 ipython notebook 中读取输入值

python - 如何在python中动态创建类变量

python - 如何将两个只有一个公共(public)维度(批量大小)的 3D 张量传递给 dynamic_lstm?

mysql - 无法在Linux中安装mysqlclient