#1 Le 17/01/2013, à 11:57
- KoZzY
[RESOLU] Python - Pickle introuvable
Bonjour à tous,
J'ai une question toute bête, connaîtriez vous une alternative au module "Pickle" car j'ai beau importer ce dernier, Python semble ne pas vouloir me laisser l'utiliser:
Voici un essai:
import pickle
with open ("texte","wb") as f:
lol = "caca boudin"
pickpick = pickle.Pickler(f)
pickpick.dump(lol)
f.close()
Tadaaaaam:
name 'pickle' is not defined
Des fois ça marche, des fois ça ne marche pas ... J'aime bien l'idée de l'aléatoire mais faut pas pousser
Ou alors si vous pouviez me donner les conditions à respecter impérativement pour faire fonctionner ce module (ou les problèmes les plus fréquemment rencontrés), ça m'aiderait beaucoup car je ne trouve pas la documentation en rapport aux questions que je me pose.
Désolé pour cette question de noob mais merci d'avance pour vos réponses de pro
Dernière modification par KoZzY (Le 17/01/2013, à 13:06)
Hors ligne
#2 Le 17/01/2013, à 12:25
- pingouinux
Re : [RESOLU] Python - Pickle introuvable
Bonjour,
Ton script semble correct (f.close() n'est pas obligatoire avec with open......... as f). Il faut aussi éviter de mélanger les indentations (tabulation pour les unes, espaces pour les autres), mais ce n'est pas en cause ici.
Comment lances-tu le script ? Les comportements aléatoires ont-ils lieu sur la même machine ?
Hors ligne
#3 Le 17/01/2013, à 12:40
- KoZzY
Re : [RESOLU] Python - Pickle introuvable
Merci pour ces précisions (je ne savais pas pour le f.close())... Je vais vite coder un autre exemple (je ne fais que des petites parcelles de code pour apprendre à utiliser les fonctions des modules que je découvre):
#!/usr/bin python
# -*-coding: utf-8 *-
from getpass import getpass
from pickle import *
n = int(123)
box_open = True
reponse = "l"
liste = ["y","yes","n","no"]
password = int(0)
while box_open == True:
try:
password = int(getpass("Pass: "))
print "Sure ? "
reponse = raw_input("Y/N: ").lower()
if reponse in liste[0:2]:
with open ("code","wb") as fichier_texte:
pick = pickle.Pickler(fichier_texte)
pick.dump(password)
box_open = False
elif reponse in liste[2:4]:
print "Retry...\n"
else:
print "Y/Yes or N/no"
except ValueError:
print "Int = Valeur numérique !"
continue
L'autre code fonctionne à tous les coups maintenant mais celui-ci me pose problème et je ne comprends pas pourquoi (nan sérieux, ne vous moquez pas de moi xD).
Pour lancer le "programme" (si on peut appeler ça comme ça) j'utilise la fonction Exécuter (F5) de Geany. Sinon je peux aussi le lancer dans un terminal avec: Python fichier.py ça revient au même.
Et oui, tout est sur la même machine.
ps: Tabulation pour les uns, espace pour les autres ? Ah bon ?! Quand dois-je utiliser un espace plutôt qu'une tabulation ? Merci =]
Dernière modification par KoZzY (Le 17/01/2013, à 12:47)
Hors ligne
#4 Le 17/01/2013, à 12:56
- pingouinux
Re : [RESOLU] Python - Pickle introuvable
Dans ton script en #3, il y a trois choses qui ne vont pas :
La 1ère ligne doit être
#!/usr/bin/pythonSi tu fais
from pickle import *
il faut l'utiliser ainsi
mon_pickler = Pickler(fichier_texte)
Si tu fais
import pickle
il faut l'utiliser ainsi
mon_pickler = pickle.Pickler(fichier_texte)
ferme_valise() n'est pas définie
Ajouté :
Quand dois-je utiliser un espace plutôt qu'une tabulation ?
Peu importe, mais dans un même bloc, il vaut mieux éviter les mélanges (erreur en python3). Je trouve plus commode de n'utiliser que les espaces, mais chacun fait comme il veut.
Dernière modification par pingouinux (Le 17/01/2013, à 12:59)
Hors ligne
#5 Le 17/01/2013, à 13:05
- KoZzY
Re : [RESOLU] Python - Pickle introuvable
Problème résolu, grâce à toi !!! Merci =]
ferme_valise() est bel et bien défini mais j'ai volontairement retiré cette fonction du code avant de l'afficher ici pour rester concentré sur le problème principal de Pickler
C'était bien à cause de l'importation et de mon utilisation du module, là j'ai fait:
from pickle import *
mon_fichier.Pickler(password) #-- Ne pas oublier la majuscule à "Pickler"
et ça fonctionne à merveille, encore merci
Je ferai plus attention aux espacements alors !
Hors ligne