IndexError: list index out of range sur un script Python...
Bonjour,
J'utilise un script Python depuis pratiquement 2 ans, pour gérer la géolocalisation des iPhone de la maison, dans le cadre d'un système domotique.
Depuis aujourd'hui, quand je lance le script, j'ai systématiquement un message d'erreur :
pi@raspberrypi:~ $ sudo python3 geoloc.py Setup Time Zone Py iCloud Services Two-factor authentication required. Your trusted devices are: Which device would you like to use? [0]: 0 Traceback (most recent call last): File "geoloc.py", line 29, in <module> device = devices[device] IndexError: list index out of range
Voici le script :
import os import click import datetime import time import requests from pyicloud import PyiCloudService print("Setup Time Zone") time.strftime("%X %x %Z") os.environ["TZ"] = "Europe/Paris" print("Py iCloud Services") #remplacer par votre mail et password de compte icloud api = PyiCloudService("***@***", "XYZ") if api.requires_2fa: print("Two-factor authentication required. Your trusted devices are:") devices = api.trusted_devices for i, device in enumerate(devices): print( " %s: %s" % (i, device.get("deviceName", "SMS to %s" % device.get("phoneNumber"))) ) device = click.prompt("Which device would you like to use?", default=0) device = devices[device] if not api.send_verification_code(device): print("Failed to send verification code") sys.exit(1) code = click.prompt("Please enter validation code") if not api.validate_verification_code(device, code): print("Failed to verify verification code") sys.exit(1) i = 0 #permet d'obtenir l'id de votre device for c in api.devices: print("%d :%s" % (i,c)) i = i+1 iphone_loc = {} #remplacer 16 par l'id voulu iphone_loc = api.devices[1].location() location = "%s,%s" % (iphone_loc['latitude' ] , iphone_loc['longitude']) print(location) #url du device geotrav url = "%s%s" % ("https://jeedom.XYZ.ovh/plugins/geotrav/core/api/jeeGeotrav.php?apikey=ABCD&id=644&value=",location) print(url) requests.get(url)
Vu que ce script n'a jamais été modifié en 2 ans, et qu'il a toujours fonctionné, je ne comprends pas pourquoi, d'un coup, j'ai ce message d'erreur... Donc je me tourne vers les pros du code. Voyez vous une anomalie quelque part ?
Merci à tous !
Macintosh / Safari 15.6.1
A voir également:
- Indexerror: replacement index 2 out of range for positional args tuple
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Supercopier 2 - Télécharger - Gestion de fichiers
- Index téléphonique - Guide
- Cmdlcache out of memory ✓ - Forum jeux en ligne
- Av out - Forum Audio
Je valide cette explication. Il te reste donc juste à comprendre pourquoi api.trusted_devices est vide.
Quoi qu'il en soit, le code devrait contrôler si l'index device est valide, en particulier quand la liste devices est vide.
Une adaptation possible de ton code :
Bonne chance