因此,我尝试了使用循环运行的JSON文件中的数据返回数据的不同方法。
这个想法是我有一个ip.s的config.json文件,当它被调用时需要提供给该函数。
{
"ip1" : "10.0.0.111",
"ip2" : "10.0.0.112"
}
import json
import urllib.request
with open('config.json') as config_file:
data = json.load(config_file)
def temprature(v):
urlData = f"http://{v}:8080/getdevice?device=type28_1"
#print(urlData)
webURL = urllib.request.urlopen(urlData)
data = webURL.read()
encoding = webURL.info().get_content_charset('utf-8')
tempData = json.loads(data.decode(encoding))
return tempData["Celsius"]
for (k, v) in data.items():
#print("Key: " + k)
temprature(v)
#print(str(v))
我看不到或想不出如何获取临时数据并将其保存到外部变量。我试图制作一个调用for循环的变量,但对我来说也失败了。
编辑: 被称为This post.的副本,但这并不涵盖for循环的返回。
答案 0 :(得分:3)
您需要将值保存到某种数据结构-列表,字典等:
temperature_data = []
for (k, v) in data.items():
#print("Key: " + k)
temperature_data.append(temprature(v))
#print(str(v))
print(temprature(v))
print(temperature_data)
temperature_data = {}
for (k, v) in data.items():
#print("Key: " + k)
temperature_data[k] = temprature(v)
#print(str(v))
print(temprature(v))
print(temperature_data)
就像@ggorlen提到的那样,打印结果似乎是您最终想要做的,因此我在循环中添加了一条print语句。
确保在循环外建立数据结构,因为否则,您将在每个循环上覆盖变量。