Python Forum
IndexError: list index out of range
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
IndexError: list index out of range
#11
First of all - sorry to tell you, but you are doing it wrong.
get_flight() returns a list of FlightRadar24.flight.Flight objects. Every object has methods and you can access them, no need for all this complication to convert to string and then parse it.

import csv
from datetime import datetime
from FlightRadar24.api import FlightRadar24API
fr_api = FlightRadar24API()
 
flights = fr_api.get_flights(airline = 'AZU')
print(type(flights[0]))
print(flights[0].__dict__)

with open('fr24.csv', 'w') as f:
    fieldnames = ['time', 'aircraft_code', 'registration', 'altitude', 'ground_speed', 'heading'] # you can include whatever attributes you want
    wrtr = csv.DictWriter(f, fieldnames=fieldnames, extrasaction='ignore')
    wrtr.writeheader()
    for flight in flights:
        flight.time = datetime.fromtimestamp(flight.time) # convert the timestamp to datetime object
        wrtr.writerow(flight.__dict__) # here I pass all attributes as dict, but you can always access individual attributes, like I did with time above
the output

Output:
<class 'FlightRadar24.flight.Flight'> {'id': '273002c6', 'icao_24bit': 'E495B3', 'latitude': -23.6238, 'longitude': -46.6602, 'heading': 236, 'altitude': 0, 'ground_speed': 4, 'squawk': '5107', 'aircraft_code': 'A20N', 'registration': 'PR-YSE', 'time': 1616685581, 'origin_aiport_iata': 'REC', 'destination_airport_iata': 'CGH', 'number': 'AD4251', 'airline_iata': 'AD', 'on_ground': 1, 'vertical_speed': 0, 'callsign': 'AZU4251', 'airline_icao': 'AZU'}
fr24.csv

Output:
time,aircraft_code,registration,altitude,ground_speed,heading 2021-03-25 17:19:41,A20N,PR-YSE,0,4,236 2021-03-25 17:19:42,A20N,PR-YSD,3500,141,73 2021-03-25 17:19:37,E195,PR-AUK,36000,448,336 2021-03-25 17:19:40,A20N,PR-YRN,0,12,132 2021-03-25 17:19:42,A20N,PR-YRD,37050,470,27 2021-03-25 17:19:41,A339,PR-ANX,40000,462,332 2021-03-25 17:19:41,AT76,PR-AQQ,16525,301,350 2021-03-25 17:19:42,A20N,PR-YYG,37825,459,359 2021-03-25 17:19:38,AT76,PR-AQJ,8075,197,350 2021-03-25 17:19:42,E195,PR-AYO,6875,198,60 2021-03-25 17:19:41,C208,PT-MED,4700,173,108 2021-03-25 17:19:42,AT76,PR-AQR,21025,267,92 2021-03-25 17:19:41,E295,PS-AEG,4625,172,73 2021-03-25 17:19:38,AT76,PR-AKB,10075,256,269 2021-03-25 17:19:42,E195,PR-AUJ,3350,153,128 2021-03-25 17:19:42,E295,PR-PJN,4525,193,71 2021-03-25 17:19:42,E195,PR-AUH,37000,474,8 2021-03-25 17:19:39,A20N,PR-YRE,0,19,309 2021-03-25 17:19:42,A20N,PR-YSG,38000,441,221 2021-03-25 17:19:41,A20N,PR-YRW,12000,259,307 2021-03-25 17:19:42,AT76,PR-AKF,16925,179,347 2021-03-25 17:19:41,A21N,PR-YJB,27800,478,313 2021-03-25 17:19:41,A20N,PR-YYJ,0,12,317
Now, I didn't look into details - e.g. iz it possible to retrieve info for multiple companies or you need to make separate requests, but you get the idea.
Also, if you are going to scrap large amount of information - maybe it's better to look at some database, e.g. sqlite3 support comes with python standard library. Also consider that API can blok you if you are heavy on them - check their allowed limits.

Finally - maybe you need to take some tutorial/course, incl. about objects, OOP, etc.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#12
(Mar-25-2021, 01:42 PM)deanhystad Wrote: Don't call this:
n_acft_voando = [dia, hora, nav[0], nav[1], nav[2]]
Until you've done this three times:
    for i in range(0,len(empresas)):
        nav.append(len(fr_api.get_flights(airline = empresas[i])))
It is difficult to say how such a thing is accomplished since it depends as much on what the program does as the nuts and bolts of coding the program so it doesn't crash. Right now all I have to work with is some code that doesn't work. it is difficult to know how to fix it unless I know what it is SUPPOSED to do.

What does this line do?
n_acft_voando = [dia, hora, nav[0], nav[1], nav[2]]
[/python]
Why does in need nav[0], nave[1] and nav[2]? What are nav[0], nav[1] and nav[2]?
I find it suspicious that these indices are hard coded when the outer loop may run more than 3 times based on this:
    empresas = ['AZU', 'GLO', 'LAN']
    #, 'JBU', 'AAL', 'DAL', 'ACA', 'UAL'
Is this a hint that empresas may be a larger list?. If so, maybe the proper way to code this is:
    for i in range(2):
        nav.append(len(fr_api.get_flights(airline = empresas[i])))

    for i in range(2,len(empresas)):
        nav.append(len(fr_api.get_flights(airline = empresas[i])))
        dados_voo = fr_api.get_flights(airline = empresas[i])
 
        for k in range (0,len(dados_voo)):
            substring = re.search(pattern, str(dados_voo[k])).group(1)
            substring = substring.split(' - ')
            modelo_tail = [x.replace(" ", ";") for x in substring]
            n_acft_voando = [dia, hora, nav[i-2], nav[i-1], nav[i]]
            acft_voando=[dia, hora, modelo_tail[0]]
            print(acft_voando)
 
            with open(r'C:\Users\bruno\Desktop\Voos\DB\AeronavesAr.txt', 'a', newline='') as f:
                writer = csv.writer(f, delimiter=';')
                writer.writerow(n_acft_voando)
 
            with open(r'C:\Users\bruno\Desktop\Voos\DB\DetalhesAeronaves.txt', 'a', newline='') as f:
                writer = csv.writer(f, delimiter=';')
                writer.writerow(acft_voando)
Again, I don't know if this is correct.

YOU ARE THE BEST!
THANK YOU SO MUCH!!!
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  index of range, but data prints out mrc06405j 1 321 Mar-25-2021, 07:20 PM
Last Post: buran
  Changing Index of 2 List in python giddyhead 0 298 Mar-05-2021, 05:45 PM
Last Post: giddyhead
  IndexError: list index out of range ramu4651 2 519 Jan-24-2021, 01:45 PM
Last Post: buran
  string index out of range jade_kim 4 451 Jan-13-2021, 05:41 AM
Last Post: jade_kim
  IndexError: index 10 is out of bounds for axis 0 with size 1 vahid89 1 1,475 Jan-07-2021, 06:19 PM
Last Post: deanhystad
Question Matching variable to a list index Gilush 17 997 Nov-30-2020, 01:06 AM
Last Post: Larz60+
  How to get index of minimum element between 3 & 8 in list Mekala 2 710 Nov-10-2020, 12:56 PM
Last Post: DeaD_EyE
  code with no tuple gets : IndexError: tuple index out of range Aggam 4 627 Nov-04-2020, 11:26 AM
Last Post: Aggam
  List index out of range error while accessing 2 lists in python K11 2 568 Sep-29-2020, 05:24 AM
Last Post: K11
  list vs [] with range quazirfan 5 672 Sep-19-2020, 12:45 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020