Partage
  • Partager sur Facebook
  • Partager sur Twitter

module ne fonctionnant pas

fonction alternative à la fonction .exist ne fonctionnant pas

Sujet résolu
    10 janvier 2022 à 11:37:46

    bonjour,

    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.





    • Partager sur Facebook
    • Partager sur Twitter

    méfiez vous des cochon d'indes couineurs

      10 janvier 2022 à 12:08:04

      parce que incrementation devient plus grand que len(contenuFichier) - qui serait une bien meilleure condition à tester pour sortir de la boucle.
      • Partager sur Facebook
      • Partager sur Twitter
        10 janvier 2022 à 13:08:55

        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

        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown