首页 > 解决方案 > Python:带有子模块的应用程序 - 导入不起作用(NameError:未定义名称“时间”)

问题描述

我正在构建一个小型应用程序。在我的 main.py 中,我有:

from lib.save_decoded_json import saveJsonToFile
# some code
saveJsonToFile("get_info", outStr)
# some code

在 lib 文件夹中,我有 2 个文件:

__init__.py
save_decoded_json.py

最后一个看起来像这样:

import time

def saveJsonToFile(folderName, packerJsonData):
    timestr = time.strftime("%Y%m%d-%H%M%S")
    with open(folderName + "/" + timestr + ".json","w") as file:
        for result in extract_json_objects(packerJsonData):
            file.write(json.dumps(result, indent=4, sort_keys=True))
    print('-------------------')
    print(folderName + ' SAVED')
    print('-------------------')

调用 saveJsonToFile 会引发此错误:

File "lib/save_decoded_json.py", line 2, in saveJsonToFile
NameError: name 'time' is not defined

为什么子模块不能正确导入时间”

标签: pythonmodulepackage

解决方案


您只导入函数saveJsonToFile而不是整个脚本,因此您从未导入时间。

time但是,您可以在函数内部导入。这将起作用:

def saveJsonToFile(folderName, packerJsonData):
    import time
    timestr = time.strftime("%Y%m%d-%H%M%S")
    with open(folderName + "/" + timestr + ".json","w") as file:
        for result in extract_json_objects(packerJsonData):
            file.write(json.dumps(result, indent=4, sort_keys=True))
    print('-------------------')
    print(folderName + ' SAVED')
    print('-------------------')

推荐阅读