我执行os.popen()
命令以从命令行访问存储在InfluxDB中的度量。数据是一个表,但是我只关心表的两个特定列,这就是为什么我使用splitlines()
的原因。
为了在GUI中显示特定的两列,我使用了for
循环,并去除标题行,将第2列和第3列的值存储在单独的数组中,如下所示:
list_of_number = []
list_of_assigned = []
for line in output[1:]:
self.cameraOutputTextEdit.append(line[2] + " " + line[1])
dict = {}
dict['claimed'] = line[1]
dict['eya_cam'] = line[2]
list_of_assigned.append(dict['claimed'])
list_of_number.append(dict['eya_cam'])
print(list_of_assigned)
print (list_of_number)
print语句产生输出:
['claimed', '-------', 'false', 'true']
['eya_cam', '-------', '2', '1']
我现在需要执行某些条件:
camNum = self.cameraNumber.text()
t="true"
f="false"
if (camNum in list_of_number and t in list_of assigned):
do_something
if (camNum list_of_number and f in list_of assigned):
do_something
if (camNum not in list_of_number):
do_something
此问题是,给定摄像机编号“ 2”时,即使已在数据库中将其指定为“ false”,它也会执行第一个条件。 这种逻辑在哪里出问题了?
答案 0 :(得分:1)
t in list_of_assigned
['claimed', '-------', 'false', 'true']
您正在测试'true'
变量中是否包含值list_of_assigned
。只要此列表中存在true,t in list_of_assigned
就会始终返回true。您应该压缩这两个表并循环循环解析它们,或者检查list_of_number
列表中摄像机的索引,然后检查list_of_assigned
中的索引是否为真。
答案 1 :(得分:0)
您是否偶然输入了assigned
字?
if (camNum in list_of_number and t in list_of_assigned):
我认为您可能打算如上所述进行写作。