Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme d'exception

EOFError: Ran out of input

6 janvier 2019 à 14:06:12

Bonjour,

Je suis en train de programmer un Jeu de pendus mais une erreur ce produit quand je lance le programme.

Voici le code :

#-*-coding:UTF-8 -*

# Fichier compris avec le jeu :

#   - donnees.py

#   - pendu_mod.py

############# Importation des modules utiles #############

import os

import pickle

###### On se déplace dans le bon répertoire courant ######

os.chdir("D:/Anakonda/Jeu du pendu")

####################### Démmarrage #######################

print(">>>Démarrage en cour///")

try: # On essaye d'ouvrir le fichier donnees.py

    with open('donnees','rb') as fichier:

        mon_depickler = pickle.Unpickler(fichier)

        premiere = mon_depickler.load()

except FileNotFoundError: # Si il n'existe pas, on l'indique à la variable 1er

    premiere = False

if premiere == False: # Si donnees.py n'existe pas, on le créer

    with open('donnees','wb') as fichier:

        mon_pickler = pickle.Picler(fichier)

        premiere = True

        liste_mots = [

            "calculée", "odieuses", "voudrait", "locution", "craillât", "transmua", "emportai", "pantoums", "targuera", "dégommes",

            "inculpés", "enquêtas", "bondîmes", "biaisait", "pêcherez", "ovalises", "fuguasse", "clignent", "grailler", "ozonisée", "fichasse",

            "hourdées", "denteler", "dépulpât", "grognais", "gastrite", "bourrais", "biopsies", "épieriez", "désossés", "crucifia", "épaulera"

        ]

        score = {}

        mon_pickler.dump(premiere)

        mon_pickler.dump(liste_mots)

        mon_pickler.dump(score)

    print("Fichier créer avec succée")

with open('donnees','rb') as fichier: # On récupére les variable de donnees

    mon_depickler = pickle.Unpickler(fichier)

    liste_mots = mon_depickler.load()

    liste_mots = mon_depickler.load()

    score = mon_depickler.load()

################################# Début du Jeu #################################

print("Etablishing communication...///")

print(">>>start transmition :")

print("   /dev/: Bienvenue dans ce programme.")

print("   /dev/: Nous allons jouer au jeu du pendu")

print("   /dev/: Donne moi ton nom pour les highscores")

nom = input("   /guest_1/: ") # On demmande à l'utilisateur son nom

print("end transmition///")

print(">>>Searching for registrated score///")

i = 0

for cle, valeur in score.items(): # On regarde si l'utilisateur a déja joué

    aucun_pseudo = True

    if cle == nom: # Si oui, on lui montre son score

        aucun_pseudo = False

        print(">>>Score found///")

        print(">>>{} = {}///".format(cle, valeur))

Et voici l'exception relever :

 Traceback (most recent call last):
  File "D:\Anakonda\Jeu du pendu\Pendu.py", line 23, in <module>
    premiere = mon_depickler.load()
EOFError: Ran out of input
Quelqu'un pourrait-il me dire as quoi correspond l'erreur et, éventuellement, me dire comment la fixer ?
Désoler d'avance pour les faute d'ortographe.

-
Edité par Xune666_ 8 janvier 2019 à 13:35:12

  • Partager sur Facebook
  • Partager sur Twitter
6 janvier 2019 à 15:06:25

Bonjour,

Ah dsl mais ce que t'a mis sa pique les yeux tu pourrais mettre ton code  en appuyant sur </> stp 

  • Partager sur Facebook
  • Partager sur Twitter
8 janvier 2019 à 13:36:28

Merci, c'est bouceaup mieux comme ça :)
  • Partager sur Facebook
  • Partager sur Twitter
8 janvier 2019 à 15:44:34

Donc dans l'exo on a trois fichier donnée.py fonction.py et pendu.py et tu essayes de récupérer tes données de ton fichier.py comme sa ? Ce n'est pas comme sa qu'on importe un fichier.py. Tu devrais relire l'intégralité du cours sur les fichiers car tu n'as pas compris comment les utiliser on dirait. Pour importer les donées de ton fichier donnée.py on utilise ici cette méthode (Je sais pas mais je pense pas qu'il y en ai d'autres) :

from donnée import *



  • Partager sur Facebook
  • Partager sur Twitter
8 janvier 2019 à 17:20:08

Plutôt utiliser

import donnees

La forme avec l'asterisque peut provoquer des problèmes si deux variables ou deux fonctions ont le même nom. Et comme ça se fait sans message d'erreur, ça va provoquer des problèmes difficiles à debug, surtout pour un débutant.

  • Partager sur Facebook
  • Partager sur Twitter

Blond, bouclé, toujours le sourire aux lèvres...

8 janvier 2019 à 22:02:36

Ouaip du coup si tu utilise

import donnees

tu dois faire pour par exemple accéder au score :

donnees.score




  • Partager sur Facebook
  • Partager sur Twitter
16 janvier 2019 à 16:05:45

D'accord mais la commande import est pas réservé a l'importation de module. Je cherche juste a enregistré un objet dans un fichier et le ressortir.

  • Partager sur Facebook
  • Partager sur Twitter
16 janvier 2019 à 19:43:23

Salut, je pense avoir trouvé l'origine de ton problème.

premièrement ton fichier "donnees.py" n'est pas un fichier de code source python mais un fichier de donnés, aucune raison donc de lui coller une extension .py.

Ensuite, ligne 39 tu a une faute de frappe (Picler au lieu de Pickler). Une erreur est donc levée si cette ligne est executé, cad si le fichier "donnees" n'est pas encore créé. Le problème, c'est que cette erreur survient juste après la création du fichier, et avant que tu écrives dedans. En gros tu as créé le fichier mais celui-ci est vide : d'où l'erreur que tu as ensuite quand tu essayes d'en lire le contenu.

Edit :

JaurelFosset a écrit:

D'accord mais la commande import est pas réservé a l'importation de module. Je cherche juste a enregistré un objet dans un fichier et le ressortir.


Si si, import sert exclusivement à importer des modules/packages

-
Edité par __Nicolas__ 16 janvier 2019 à 20:56:21

  • Partager sur Facebook
  • Partager sur Twitter
16 janvier 2019 à 20:36:03

Merci, je pense que tu as trouver le probléme. Je vais regarder ça
  • Partager sur Facebook
  • Partager sur Twitter