Programme python : problème lors de l'ouverture d'un fichier

Bonjour !
Je suis en train de coder un script en python, et j'ai besoin de lire des informations dans un fichier. J'ai donc réalisé ce bout de code :
fichier = open("mots.txt", "r")
stock_out_line = fichier.read()
fichier.close()
mots_prof = []


Mais ça ne marche pas... Pourriez-vous m'aider ?
Merci bcp

6 réponses

Résumé de la discussion

Le problème porte sur l'ouverture et la lecture du fichier mots.txt depuis le script Python sans préciser le répertoire de travail. La meilleure approche propose de changer l'espace de travail vers le répertoire contenant le script et d'utiliser un chemin absolu pour ouvrir le fichier. On peut vérifier le répertoire actuel avec une commande comme os.getcwd() pour s'assurer que mots.txt est bien accessible et situé dans le même répertoire que le script. D'autres solutions évoquaient les ouvertures simples lors d'un lancement via un double clic, mais l'idée clé reste le bon chemin, afin d'éviter les erreurs de localisation.

Bobot (l’IA à votre service)
  1. Bonjour,

    Ton code a l'air correct
    Tu as un message d'erreur ?

    Apres, si tu veux afficher le contenu du fichier, il faut faire un print:

    print(stock_out_line)
    1. Non aucun... Par contre, lorsque je double clique sur le fichier et que je l'ouvre avec mon environnement python, le page s'ouvre et se referme tout de suite... Et je suis sûr que je problème vient de là
      1. Contributeur
        bonjour,
        tu peux ajouter des print() et des input() pour vérifier ce que fait ton programme.
    2. ah et j'utilise ma variable stock_out_line après, donc pas besoin de print(XXX)
      1. Bonjour,

        Ajoute cette ligne en fin de code et dis-nous ce que ça donne :

        input('Appuyer sur Entrée ...')
        1. Toujours rien. Le programme s'ouvre et se referme instantanément. ????
        2. @yg_beEt bien, le programme m'indique "Appuyez sur entrée", j'écris qqch, je fais entrée et... le programme se referme...
          Et même si je mets cette ligne de code au début et à la fin, c'est-à-dire ainsi (voir en-dessous), ça ne fonctionne pas...
          input('Appuyez sur entrée...')

          fichier = open("mots.txt", "r")
          stock_out_line = fichier.read()
          fichier.close()
          mots_prof = []

          input('Appuyez sur entrée...')
        3. @yg_besi vous essayez chez vous avec la même programme, ça marche ?
        4. Contributeur
          @Shulker_SafeEt en mettant le nom complet du fichier à ouvrir, avec le chemin?
      2. @yg_be
        C'est encore pire, je n'ai même pas le "Appuyez sur entrée..."
        Aïe aïe aïe
        1. Contributeur
          Peux-tu partager le programme?
        2. @yg_beMon programme entier ou les tests que vous m'avez demandé d'effectuer?
        3. @yg_beBon bah voici mon code

          import os
          from time import sleep
          import random
          from colorama import Fore, Style
          import keyboard
          
          choix_menu = ""
          mot_de_passe_entre = ""
          choix_jeu_eleve = ""
          quit_eleve = ""
          change_mot_de_passe_un = ""
          change_mot_de_passe_deux = ""
          mdp = ""
          mots_run = []
          mots_faux = []
          translater = "ìììì"
          help_error = ""
          mot_de_passe_prof = ""
          
          
          fichier = open("mots.txt", "r")
          stock_out_line = fichier.read()
          fichier.close()
          mots_prof = []
          
          while len(stock_out_line) > 0:
              position = stock_out_line.find(translater)
              mots_prof.append(stock_out_line[0:position])
              stock_out_line = stock_out_line[(position + 4):len(stock_out_line)]
          
          while 1 == 1:
              choix_menu1 = False
              while not choix_menu1:
                  os.system("cls")
                  print("\t\t\tMenu :\n")
                  print("Où voulez-vous vous rendre ?")
                  print("-Espace élève")
                  print("-Espace enseignant")
                  print("-Espace sortie\n")
                  choix_menu = str(input("Espace : "))
                  if choix_menu == "élève" or choix_menu == "eleve" or choix_menu == "Elève" or choix_menu == "Eleve" or \
                          choix_menu == "Élève" or choix_menu == "ELEVE" or choix_menu == "ÉLÈVE":
                      os.system("cls")
                      print("\t\t\tEspace élève :\n")
                      print("Bienvenue dans l'espace élève.")
                      sleep(2)
                      choix_eleve1 = False
                      while not choix_eleve1:
                          os.system("cls")
                          print("\t\t\tEspace élève :\n")
                          choix_jeu_eleve = str(input("Voulez-vous lancer une partie de Vocabulary Tester ?\n"))
                          if choix_jeu_eleve == "Oui" or choix_jeu_eleve == "oui" or choix_jeu_eleve == "OUI" or \
                                  choix_jeu_eleve == " Oui" or choix_jeu_eleve == " oui" or choix_jeu_eleve == " OUI":
                              os.system("cls")
                              print("\t\t\tEspace élève :\n")
                              print("Attention, la partie démarre dans...")
                              aide_depart = 4
                              for loop in range(3):
                                  aide_depart = aide_depart - 1
                                  print(aide_depart)
                                  sleep(0.25)
                                  os.system("cls")
                                  print("\t\t\tEspace élève :\n")
                                  print("Attention, la partie démarre dans...")
                                  print(str(aide_depart) + ".")
                                  sleep(0.25)
                                  os.system("cls")
                                  print("\t\t\tEspace élève :\n")
                                  print("Attention, la partie démarre dans...")
                                  print(str(aide_depart) + "..")
                                  sleep(0.25)
                                  os.system("cls")
                                  print("\t\t\tEspace élève :\n")
                                  print("Attention, la partie démarre dans...")
                                  print(str(aide_depart) + "...")
                                  sleep(0.25)
                                  os.system("cls")
                                  print("\t\t\tEspace élève :\n")
                                  print("Attention, la partie démarre dans...")
                              print("C'est parti !")
                              sleep(1)
                              mots_run = mots_prof
                              while len(mots_run) != 0:
                                  choose = (2 * ((random.randint(1, (int(len(mots_run) / 2)))) - 1))
                                  os.system("cls")
                                  print("\t\t\tEspace élève :\n")
                                  answer = str(input("Comment dit-on \"" + mots_run[choose + 1] + "\" en anglais ?\nCela se dit (tout écrire en minuscules) : "))
                                  if answer == mots_run[choose]:
                                      print("\nBravo, c'est ça !")
                                      del mots_run[choose]
                                      del mots_run[choose]
                                      sleep(1)
                                  else:
                                      print("\nNon, c'est \"" + mots_run[choose] + "\". Dommage...")
                                      if not mots_run[choose] in mots_faux:
                                          mots_faux.append(mots_run[choose])
                                      sleep(2)
                              fichier = open("mots.txt", "r")
                              stock_out_line = fichier.read()
                              fichier.close()
                              mots_prof = []
          
                              while len(stock_out_line) > 0:
                                  position = stock_out_line.find(translater)
                                  mots_prof.append(stock_out_line[0:position])
                                  stock_out_line = stock_out_line[(position + 4):len(stock_out_line)]
          
                              os.system("cls")
                              print("\t\t\tEspace élève :\n")
                              print("Tu as fini !\nClique sur espace pour quitter.\n\nTes résultats :")
                              temo = 0
                              choose = int(len(mots_prof) / 2)
                              for loop in range(choose):
                                  if mots_prof[temo] in mots_faux:
                                      print(Fore.RED + Style.BRIGHT + mots_prof[temo])
                                  else:
                                      print(Fore.GREEN + Style.BRIGHT + mots_prof[temo])
                                  temo += 2
          
                              while 1 == 1:
                                  if keyboard.is_pressed(" "):
                                      print(Style.RESET_ALL)
                                      break
          
                          elif choix_jeu_eleve == "Non" or choix_jeu_eleve == "non" or choix_jeu_eleve == "NON" \
                                  or choix_jeu_eleve == " Non" or choix_jeu_eleve == " non" or choix_jeu_eleve == " NON":
                              os.system("cls")
                              quit_eleve1 = False
                              while not quit_eleve1:
                                  print("\t\t\tEspace élève :\n")
                                  quit_eleve = str(input("Voulez-vous quitter l'espace élève ?\n"))
                                  if quit_eleve == "oui" or quit_eleve == "Oui" or quit_eleve == "OUI":
                                      choix_eleve1 = True
                                      quit_eleve1 = True
                                  elif quit_eleve == "non" or quit_eleve == "Non" or quit_eleve == "NON":
                                      choix_eleve1 = False
                                      quit_eleve1 = True
                                      os.system("cls")
                                      print("\t\t\tEspace élève :\n")
                                      print("Well, get lost !\nI'm kidding...")
                                      sleep(3)
                                  else:
                                      os.system("cls")
                                      print("\t\t\tEspace élève :\n")
                                      print("Mauvais choix. Répondez en un mot.")
                                      sleep(2)
                                      os.system("cls")
                          else:
                              os.system("cls")
                              print("\t\t\tEspace élève :\n")
                              print("Mauvais choix. Répondez en un mot.")
                              sleep(2)
                              os.system("cls")
                  elif choix_menu == "enseignant" or choix_menu == "Enseignant" or choix_menu == "ENSEIGNANT":
                      os.system("cls")
                      fichier = open("mdp.txt", "r")
                      mot_de_passe_prof = fichier.read()
                      fichier.close()
                      mot_de_passe_entre = str(input("Entrez le mot de passe.\n"))
                      if mot_de_passe_entre == mot_de_passe_prof:
                          os.system("cls")
                          print("\t\t\tEspace enseignant :\n")
                          print("Bienvenue dans l'espace enseignant.")
                          sleep(2)
                          quit_enseignant1 = False
                          while not quit_enseignant1:
                              choix_enseignant1 = False
                              while not choix_enseignant1:
                                  os.system("cls")
                                  print("\t\t\tEspace enseignant :\n")
                                  print("Que voulez-vous faire ?")
                                  print("-Ajouter un mot (1)")
                                  print("-Supprimer un mot (2)")
                                  print("-Changer le mot de passe (3)")
                                  print("-Quitter l'espace enseignant (4)")
                                  choix_enseignant = str(input("Répondez avec un chiffre.\n"))
                                  if choix_enseignant == "un" or choix_enseignant == "Un" or choix_enseignant == "UN" \
                                          or choix_enseignant == "1":
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      print("Vous allez ajouter un mot.")
                                      sleep(2)
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      fichier = open("mots.txt", "r")
                                      stock_out_line = fichier.read()
                                      fichier.close()
                                      mots_prof = []
                                      while len(stock_out_line) > 0:
                                          position = stock_out_line.find(translater)
                                          mots_prof.append(stock_out_line[0:position])
                                          stock_out_line = stock_out_line[(position + 4):len(stock_out_line)]
                                      mot_f_add = str(input("Quel mot souhaitez-vous ajouter en français ?\n"
                                                            "Mot français (tout en minuscules) : "))
                                      print(stock_out_line)
                                      if not mot_f_add in mots_prof:
                                          mot_a_add = str(input("Comment se traduit-il en anglais ?\n"
                                                                "Traduction (tout en minuscules) : "))
                                          if not mot_a_add in mots_prof:
                                              mots_prof.append(mot_a_add)
                                              mots_prof.append(mot_f_add)
                                              print("\nVous avez ajouté le mot \"" + mot_f_add + "\", traduit par \""
                                                    + mot_a_add + "\".")
                                              aide = 0
                                              for loop in range(len(mots_prof)):
                                                  stock_out_line = (str(stock_out_line) + str(mots_prof[aide]) + str(translater))
                                                  aide += 1
                                              fichier = open("mots.txt", "w")
                                              fichier.write(stock_out_line)
                                              fichier.close()
                                              sleep(3)
                                          else:
                                              os.system("cls")
                                              print("\t\t\tEspace enseignant :\n")
                                              print("Le mot \"" + mot_a_add + "\" anglais a déjà été ajouté.")
                                              sleep(3)
                                          choix_enseignant1 = True
                                      else:
                                          os.system("cls")
                                          print("\t\t\tEspace enseignant :\n")
                                          print("Le mot \"" + mot_f_add + "\" français a déjà été ajouté.")
                                          sleep(3)
                                      os.system("cls")
                                  elif choix_enseignant == "deux" or choix_enseignant == "DEUX" or choix_enseignant == "Deux" \
                                          or choix_enseignant == "2":
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      print("Vous allez supprimer un mot.")
                                      sleep(2)
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      word_to_delete = str(input("Quel mot français souhaitez-vous supprimer ?\nMot français (en minuscules) : "))
                                      if word_to_delete in mots_prof:
                                          place_word_to_delete = mots_prof.index(word_to_delete) - 1
                                          mots_prof.pop(place_word_to_delete + 1)
                                          mots_prof.pop(place_word_to_delete)
                                          os.system("cls")
                                          print("\t\t\tEspace enseignant :\n")
                                          print("Vous venez de supprimer le mot \"" + word_to_delete + "\".")
                                          fichier = open("mots.txt", "w")
                                          fichier.write(stock_out_line)
                                          fichier.close()
                                          sleep(3)
                                          choix_enseignant1 = True
                                      else:
                                          print("\nLe mot \"" + word_to_delete + "\" français n'est pas référencé.")
                                          sleep(2)
                                      os.system("cls")
                                  elif choix_enseignant == "trois" or choix_enseignant == "TROIS" or choix_enseignant == "Trois" \
                                          or choix_enseignant == "3":
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      print("Vous allez changer votre mot de passe.")
                                      sleep(2)
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      change_mot_de_passe_un = str(input("Saisissez votre nouveau mot de passe :\n"))
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      change_mot_de_passe_deux = str(input("Confirmez votre nouveau mot de passe :\n"))
                                      if change_mot_de_passe_un == change_mot_de_passe_deux:
                                          print(change_mot_de_passe_un)
                                          mdp = str(change_mot_de_passe_un)
                                          fichier = open("mdp.txt", "w")
                                          fichier.write(change_mot_de_passe_un)
                                          fichier.close()
                                          os.system("cls")
                                          print("\t\t\tEspace enseignant :\nVotre mot de passe a bien été changé en \"" + change_mot_de_passe_un + "\".")
                                          sleep(2)
                                      else:
                                          os.system("cls")
                                          print("\t\t\tEspace enseignant :\n")
                                          print("Aïe... Les deux mots de passe sont différents.")
                                          sleep(2)
                                          os.system("cls")
                                      choix_enseignant1 = True
                                      os.system("cls")
                                  elif choix_enseignant == "quatre" or choix_enseignant == "QUATRE" or \
                                          choix_enseignant == "Quatre" or choix_enseignant == "4":
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      print("Au plaisir de vous revoir.")
                                      sleep(2)
                                      choix_enseignant1 = True
                                      quit_enseignant1 = True
                                      os.system("cls")
                                  else:
                                      os.system("cls")
                                      print("\t\t\tEspace enseignant :\n")
                                      print("Mauvais choix. "
                                            "Veuillez répondre avec le chiffre correspondant au choix et non pas un mot.")
                                      sleep(4)
                                      choix_enseignant1 = False
                                      os.system("cls")
                      else:
                          os.system("cls")
                          print("Le mot de passe est incorrect.")
                          sleep(2)
                          os.system("cls")
                  elif choix_menu == "sortie" or choix_menu == "Sortie" or choix_menu == "SORTIE":
                      os.system("cls")
                      print("\t\t\tMenu :\n")
                      print("D'accord. À très bientôt !")
                      sleep(2)
                      os.system("cls")
                      quit()
                  elif choix_menu == "banana" or choix_menu == "Banana" or choix_menu == "BANANA":
                      os.system("cls")
                      print("\t\t\tBanana :\n")
                      print("Good choice...")
                      sleep(1)
                      print("                      MM\n                    M   M\n                    M   M"
                            "\n                    M   MM\n                   MM    M\n                   M      MM"
                            "\n                   M       M\n   MMM           MMM  MMMMM          MMM"
                            "\n  M   MM        M    M    MM       MM    M\n  M    M        M M  M M  MM       M     M"
                            "\n  M   MM        M    M    MM       MM    M\n   MMMM          MMM  MMM  M        MMMM"
                            "\n       MMM       M          M      MMM\n          MMM    MMMMMMM  M   MMM"
                            "\n            MMM  M       M  M  MM\n                MMMM    M   MMM")
                      print("                  M  MMM    M\n                  M          M\n                  M          M"
                            "\n                  M        MM\n                  M        M\n                  M        M"
                            "\n                  M       MM\n                  M       M\n                  M      MM"
                            "\n                  MMM  MM\n                   MMMMM\n                   M    M"
                            "\n                  MM    MM\n                  M       M\n                  M       M"
                            "\n              MMMMM      MMMMM\n           MM      M    M      MM\n           M      MM    MM      M"
                            "\n           MMMMM          MMMMM")
                      sleep(5)
                      os.system("cls")
                  else:
                      os.system("cls")
                      print("\t\t\tMenu :\n")
                      print("Mauvais choix. Veillez à ne pas commettre de faute d'orthographe.")
                      sleep(1)
                      print("Répondez en un seul mot.")
                      sleep(2)
                      os.system("cls")
          
        4. Contributeur
          @Shulker_Safepourquoi ne pas continuer avec l'exemple de départ, beaucoup plus court?
          avec input() en plus et le nom complet du fichier, avec son chemin.
        5. @yg_be
          input('Appuyez sur entrée...')
          
          fichier = open("C:\Users\lucas\Downloads\bla\mots.txt", "r")
          stock_out_line = fichier.read()
          fichier.close()
          mots_prof = []
          
          input('Appuyez sur entrée...')
      3. Mais si vous le faites vous avec le même preogramme, ça fonctionne ? (Juste en double cliquant sur le fichier)
        1. Bonjour,

          Change l'espace de travail de ton script.

          from os import chdir
          chdir('LE_CHEMIN_ABSOLU_DE_TON_RÉPERTOIRE_OÙ_SE_SITUE_TON_SCRIPT')
          • Chemin absolu = depuis la racine de ton système d'exploitation.


          Et pour visualiser quel est ce répertoire de travail, cela se fait avec la fonction
          os.getcw
        2. @Brivumais comment on lit un fichier avec ?