D'une manière générale, on ne modifie pas un conteneur pendant qu'on itère dessus. Comme thelinekioubeur l'a expliqué, crée un nouveau conteneur. Si tu fais ça avec un dictionnaire, tu prends un RuntimeErrror :
dico={42:-1, 100:1, 81:-1, 12:12}
for a in dico:
if dico[a]==-1:
del dico[a]
Traceback (most recent call last):
File "del_dico.py", line 3, in <module>
for a in dico:
RuntimeError: dictionary changed size during iteration
Et si tu voulais le faire avec une liste en utilisant ses indices, il faudrait effacer en commençant par la fin.
Bonsoir. Tout d'abord, merci à vous deux pour vos réponses. Je n'ai pas compris la ligne de code de thelinekioubeur, donc j'ai réussi à me débrouiller avec :
while nbBoucle<1000:
if fichiers[nbBoucle].find("DS_Store")!=-1:
del(fichiers[nbBoucle])
nbBoucle+=1
Comme je sais que dans aucun des cas j'aurais plus de 1000 fichiers .DS_Store.
Par contre, comme c'est un projet pour le lycée, je l'ai mis sur clé USB. J'ai rajouté ces lignes de code car je ne sais pas pourquoi, tous les fichiers ont comme préfice "._" :
for a in range(nb_images):
if fichiers[a].find("._")!=-1:
fichiers[a].replace("._", "")
Mais j'ai l'impression que ça s'exécute mal. Il me met :
_tkinter.TclError: couldn't recognize data in image file "resources/what_is_biodiversity/._.DS_Store"
Ce qui est normal puisque ce n'est pas une image, mais ne l'est pas puisqu'il y a des lignes de codes pour enlever ces soucis. Ce problème se produit uniquement sur clé puisqu'il n'y a aucune erreur quand s'est exécuté en local.
Oui, ton code pour ignorer ces fichiers ne fonctionne pas. Utilise le mien, ou trouve une solution sans utiliser del.
- Edité par thelinekioubeur 23 mai 2019 à 19:12:19
"IndexError: list index out of range" avec .find
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Découverte Python Doc Tkinter Les chaînes de caractères