python - 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
为什么子模块不能正确导入时间”
解决方案
您只导入函数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('-------------------')
推荐阅读
- apache - 如何删除 index.php 和 ? 来自我的来自索引谷歌搜索结果的网址?
- python - 如何通过 api (Python) 在 Odoo 13 中更新销售订单的状态?
- matrix - 机器学习正定矩阵
- amazon-web-services - 是否可以生成一个允许上传多个唯一对象的预签名 URL?
- c++ - 如何在 C++ 中获取集合的倒数第二个元素?
- javascript - 使用 JavaScript 从隐藏的输入值字段中检索 PHP 变量
- google-sheets - 谷歌表格中有鼠标悬停的选项吗?
- c# - Unity 编辑器捕获“按住鼠标并移动”事件
- sql - 如何使用 REGEX 或 SQL 查询检测汉字?
- ruby - 如何使用 Cucumber、Capybara 和 Ruby 登录基本授权模式浏览器