我有一个python文件,它与设备通信并访问其参数。由于我必须访问100多个参数,因此我将这些参数名称存储在csv文件的一列中。我想访问分配给这些参数的值。但是我得到的是参数名称而不是它的值。
我的csv文件就像
parameter1
parameter2
parameter3
parameter4
...
我使用以下代码:
import csv
TagList = []
with open('parameters.csv', 'rb') as file:
reader = csv.reader(file)
for row in reader:
TagList.append(row[0])
for tag in TagList:
print tag
输出:
parameter1
parameter2
parameter3
parameter4
...
我想要访问的是分配给这些参数的数据。我可以通过它的名字访问它的值。即。
print parameter1
output: 1.0
我尝试了print "%d" %(tag)
,但也无效。
请帮助我。提前谢谢。
答案 0 :(得分:0)
我不确定控制器的接口是什么样的,但我认为你会在这里使用反射。
所以TagList[0]
听起来好像等于"parameter1"
。
如果您通过python类访问控制器,则需要执行getattr(controller, TagList[0]
之类的操作。
以下是一个代码示例,说明了它的工作方式:
class foo(object):
x = 3
var = "x"
print getattr(foo(), var)
编辑:
好的,你说的话听起来更像是这样:
variable1 = 0
variable2 = "true"
paramList = ["variable1", "variable2"]
for param in paramList:
print eval(param)
eval()
的文档字符串是:在全局变量和局部变量的上下文中评估源。因此,如果它们不属于某个实例,则应该选择这些变量。
另请参阅使用globals()['a']
获得答案的How to get the value of a variable given its name in a string?来缩小评估范围。