J'ai tenté d'afficher des "noms de monstres" en parcourant un fichier "palierX". palierX varie entre "palier1" et "palier100", ici le but est de lire "palier1".
class LancementJeu:
def __init__(self, joueur):
fichier = ("files/joueurs/{}").format(joueur)
self.palierActuel = linecache.getline(fichier, 10) #La valeur de "palierActuel" est ici "1"
fichier = ("files/monstre/palier{}").format(palierActuel) #Erreur ici => global name "palierActuel" is not defined
fichier_read = open(fichier, "r")
self.monstre = []
for n in fichier_read:
self.monstre.append(n)
Si quelqu'un à une idée, je ne comprend pas pourquoi j'ai cette erreur ...
Oui, ça je viens de comprendre, mais ça vient pas de là, la valeur qui est censé être dans "self.palierActuel" n'existe pas, lorsque j'en fais un print, il n'y a rien, et pareil pour d'autres variables (que je n'ai pas affiché ici), pourtant mon fichier est bien existant, j'ai recompté le nombre de ligne pour voir si tout correspond etc ...
L'erreur "IOError: [Errno 2] No such file or directory: 'files/monstre/palier'" ne devrait pas apparaître puisque ce n'est pas "palier" mais "palier1" qui devrait être créé, mais comme les variables n'ont rien en retour avec le linecache ...
Je sais d'où vient mon problème, c'est comme si une variable contenant un linecache ne pouvait être réutilisé pour afficher un autre linecache.
J'ai réécris mon code en beaucoup plus simplifié =>
import linecache
listeDesPrenoms = linecache.getline("listeDesPrenoms", 1)
ficheDeChaquePrenom = linecache.getline(listeDesPrenoms, 1)
print listeDesPrenoms #Résultat : Pierre
print ficheDeChaquePrenom #Résultat : Aucun | Résultat qui devrait y avoir : Masculin
J'espère que c'est plus compréhensif. Je tiens à préciser que le fichier "listeDesPrenoms" et "Pierre" sont bel et bien existant.
linecache dans ton cas n'est pas vraiment utile étant donné que tu vas utiliser une centaine de chaînes au plus de ton fichier. ça va très vite pour python, donc un simple,
with open("monfichier", "r") as f:
lines = [line.strip() for line in f.readlines()] # strip() pour supprimer les espaces avant et après la chaîne
print(lines) # tu verras si ce format te convient
print(lines[1]) # envoi la valeur sexe il me semble
Merci pour ta réponse ! En effet, cela fonctionne très bien, mais retourne uniquement le "prenom".
Et le but est d'ouvrir le fichier "prenom" pour avoir accès au sexe, level etc ...
Sinon, pour ce qui est de linecache, tu as raison, ce n'est pas utile dans mon cas.
Il y'a peut-être moyen de faire encore plus propre je pense.
Oui
C'est ce que je t'avais expliqué au départ
with open("monfichier", "r") as f:
lines = [line.strip() for line in f.readlines()]
for i in xrange(3):
print lines[i]
f.readlines() renvoi la liste de toutes les lignes du fichier, elle ne nécessite qu'une seule utilisation.
Lecture impossible d'un fichier
× 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.
Python c'est bon, mangez-en.