Home > Mobile >  How to limit number of iterations from for loop
How to limit number of iterations from for loop

Time:01-08

I am working on generating a XML report from API querying and I am hoping to get some guidance in limiting the number of iterations in "for loop".

Here is the code I've written so far:

import json
import os
import requests

dserviceIP = "10.50.110.80"
apiPort = "60000"
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}/test/buses/{bus}/schedule?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}/test/buses/{bus}/events/{eventID}?session={sessionID}"

example of response from requestSchedule = requests.get(scheduleUrl) , from the response I'm hoping to only extract the first 5 id to use it as the next part of my API HTTP query. see eventID

{
    "busid": "response_example",
    "events": [
        {
            "id": "X002"
        },
        {
            "id": "X004"
        },
        {
            "id": "X006"
        },
        {
            "id": "X008"
        },
        {
            "id": "X0010"
        },
        {
            "id": "X0012"
        },
        ...
        ...
        {
            "id": "X0248"
        }
    ]
}

expect the result of my eventUrl as

http://10.50.110.80:60000/test/buses/33/events/X002?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X004?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X006?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X008?session=s12345
http://10.50.110.80:60000/test/buses/33/events/X010?session=s12345

http://10.50.110.80:60000/test/buses/34/events/X002?session=s12345
http://10.50.110.80:60000/test/buses/34/events/X004?session=s12345
...
http://10.50.110.80:60000/test/buses/34/events/X010?session=s12345

http://10.50.110.80:60000/test/buses/35/events/X002?session=s12345
...

Any advise in getting me through this roadblock is much appreciated.

CodePudding user response:

Use list slicing like [:5].

for event in jsonRequestSchedule['events'][:5]:
    eventUrl = f"http://{dserviceIP}:{apiPort}/test/buses/{bus}/events/{event['id']}?session={sessionID}"
  •  Tags:  
  • Related