python - 执行名称“templet_1h”未定义
问题描述
我正在尝试使用 exec 和 eval 函数编写代码,以从 numpy .npz 文件中读取变量列表。
当我运行代码而不将其定义为函数 def 时,代码工作。但是,当我将代码作为函数运行时,即 read_file_npz("file_address") ,python 3.7 不断弹出消息说没有定义 Templet_1h。
def read_file_npz(file_names_2):
import numpy as np
Delete_elements=["arr_0"]
evaluate_1= "templet_1h=np.load(\"./" +file_names_2+ ".npz\")";
exec(evaluate_1)
for i in (templet_1h.files):
if not ( (i in Delete_elements) ):
evaluate_2="global "+i;
exec(evaluate_2)
evaluate_2= i+"="+"templet_1h[\"" + i + "\"]";
exec(evaluate_2)
警告有什么问题以及如何修改它?
我试图在代码作为 list() 之前将 Templet_1h 清除,但随后警告变为 .files has no ... 对列表,好像评估_1 从未运行过。
解决方案
改为使用exec(evaluate_1, globals())
全局字典来存储exec
.
该代码将定义的变量添加到全局字典中。无法将其添加为函数的局部变量。
推荐阅读
- python - 在同一行插入多个数字(Python)
- python - Python Pandas:如何排除任何值重复超过 n 次的行
- serialization - 将 KryoSerializer 注册到 Hazelcast
- mysql - 我需要将代码从 flask_sqlalchemy ORM 转换为原始 SQL
- html - 是否可以将图像或视频从 Safari 下载到 iOS 13 中的相机胶卷?
- leaflet - 传单 - 是否可以将坐标与图像中的设定点居中
- php - PHP 7.1+ 中的 PHP Shuffle 产生不同的结果
- flutter - 在 ontap 函数中添加 materialRoute
- python - 如何在 matplotlib 中删除 Axes3D 图形上的比例/轴?
- angular - Angular App 部署到 Azure 网站消息“您无权查看此目录或页面。”