如何限制for循环的迭代次数
How to limit number of iterations from for loop
我正在努力从 API 查询生成 XML 报告,我希望在限制“for 循环”中的迭代次数方面获得一些指导。
这是我到目前为止编写的代码:
import json
import os
import requests
dserviceIP = "192.168.1.80"
apiPort = "2000"
busName_ST = ("ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "ST8", "ST9", "ST10")
buses_ST = ("33", "34", "35", "36", "37", "38", "39", "40", "41", "42")
listNumberOfEvents = "5" # Number of events to query in the list of schedules (Buses)
sessionID = "s12345"
def getSchedule():
for bus in buses_ST:
scheduleUrl = f"http://{dserviceIP}:{apiPort}/t/pa/{bus}/out?session={sessionID}"
requestSchedule = requests.get(scheduleUrl)
jsonRequestSchedule = json.loads(requestSchedule.text)
scheduleID = []
for scheduleIdList in jsonRequestSchedule['events']:
scheduleID.append(scheduleIdList['id'])
for eventID in scheduleID:
eventUrl = f"http://{dserviceIP}:{apiPort}/t/pa/{bus}/out1/{eventID}?session={sessionID}"
来自 requestSchedule = requests.get(scheduleUrl) 的响应示例,我希望从响应中仅提取前 5 个 id
以供使用它作为我的 API HTTP 查询的下一部分。见 eventID
{
"busid": "response_example",
"events": [
{
"id": "X002"
},
{
"id": "X004"
},
{
"id": "X006"
},
{
"id": "X008"
},
{
"id": "X0010"
},
{
"id": "X0012"
},
...
...
{
"id": "X0248"
}
]
}
期待我的 eventUrl
结果为
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X004?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X006?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X008?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X010?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X004?session=s12345
...
http://192.168.1.80:2000/t/pa/{bus}/out1/X010?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
...
非常感谢任何帮助我克服这个障碍的建议。
像 [:5]
一样使用列表切片。
for event in jsonRequestSchedule['events'][:5]:
eventUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/events/{event['id']}?session={sessionID}"
我正在努力从 API 查询生成 XML 报告,我希望在限制“for 循环”中的迭代次数方面获得一些指导。
这是我到目前为止编写的代码:
import json
import os
import requests
dserviceIP = "192.168.1.80"
apiPort = "2000"
busName_ST = ("ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "ST8", "ST9", "ST10")
buses_ST = ("33", "34", "35", "36", "37", "38", "39", "40", "41", "42")
listNumberOfEvents = "5" # Number of events to query in the list of schedules (Buses)
sessionID = "s12345"
def getSchedule():
for bus in buses_ST:
scheduleUrl = f"http://{dserviceIP}:{apiPort}/t/pa/{bus}/out?session={sessionID}"
requestSchedule = requests.get(scheduleUrl)
jsonRequestSchedule = json.loads(requestSchedule.text)
scheduleID = []
for scheduleIdList in jsonRequestSchedule['events']:
scheduleID.append(scheduleIdList['id'])
for eventID in scheduleID:
eventUrl = f"http://{dserviceIP}:{apiPort}/t/pa/{bus}/out1/{eventID}?session={sessionID}"
来自 requestSchedule = requests.get(scheduleUrl) 的响应示例,我希望从响应中仅提取前 5 个 id
以供使用它作为我的 API HTTP 查询的下一部分。见 eventID
{
"busid": "response_example",
"events": [
{
"id": "X002"
},
{
"id": "X004"
},
{
"id": "X006"
},
{
"id": "X008"
},
{
"id": "X0010"
},
{
"id": "X0012"
},
...
...
{
"id": "X0248"
}
]
}
期待我的 eventUrl
结果为
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X004?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X006?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X008?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X010?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X004?session=s12345
...
http://192.168.1.80:2000/t/pa/{bus}/out1/X010?session=s12345
http://192.168.1.80:2000/t/pa/{bus}/out1/X002?session=s12345
...
非常感谢任何帮助我克服这个障碍的建议。
像 [:5]
一样使用列表切片。
for event in jsonRequestSchedule['events'][:5]:
eventUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/events/{event['id']}?session={sessionID}"