j'essais dans le cadre d'un projet scolaire de créer une fonction qui remplacerais la fonction .exist
(une fonction permettant de vérifier l'existence d'un document).
from typing import TextIO
def Existe(nom:str, nomFichier:str) -> bool:
Existence: bool
stockage: TextIO
incrementation: int
boucle:int
nomActuel: list[str]
contenuFichier:list[str]
finBoucle:str
nomFichier = nomFichier + ".txt"
incrementation = 0
contenuFichier = []
nomActuel = []
stockage = open(nomFichier,"r")
Existence = False
contenuFichier = stockage.read()
finBoucle = contenuFichier[0]
while finBoucle != ' ':
finBoucle = contenuFichier[incrementation]
if finBoucle == ':':
for boucle in range(incrementation - 1):
nomActuel.append(contenuFichier[boucle])
if nomActuel == nom:
Existence = True
finBoucle = contenuFichier[incrementation + 1]
incrementation = incrementation + 1
return Existence
voici le code de la fonction que j'aimerais créer
from existe import Existe
test = "test.txt"
NomExiste = Existe("pierre","test.txt")
print(NomExiste)
et voici un exemple d'un petit programme que j'ai créer pour tester la fonction.
la fonction va chercher dans un fichier défini par l'utilisateur, et dont la structure ressemble un peu à ça
nom1:nom2:nom3:nom4
hors dés que je l'exécute il se produit une erreur de type:
File "C:\Users\ecole\Desktop\BUT\SAE\algorithme\python\test.py", line 6, in <module>
NomExiste = Existe("pierre","test.txt")
File "C:\Users\ecole\Desktop\BUT\SAE\algorithme\python\existe.py", line 22, in Existe
finBoucle = contenuFichier[incrementation]
IndexError: string index out of range
je ne comprend pas pourquoi cela ne fonctionne pas, et c'est pourquoi je vous demande de l'aide.
je remercie d'avance toute personne ayant répondu à ce message.
sinon nomActuel est une liste de chaine, pas une chaine; donc le test if nomActuel ==nom ne sera jamais True (["a","b"] n'est pas égal à "ab")
Et comme le dis mps, tu sors de ta boucle while uniquement si tu as un espace (ligne 21), or si il n'y a pas d'espace, tu vas "chercher" un caractère au delà de ce que tu as lu, donc erreur
il y a des façons plus simples que de traiter caractère par caractère: séparer ta chaine selon les ':' (fonction split), et regarder si un des éléments correspond au nom
module ne fonctionnant pas
× 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.
méfiez vous des cochon d'indes couineurs