Python>>> Jongler avec les données
Fermé
sebsauvage
-
2 avril 2002 à 12:59
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 2 juin 2008 à 16:15
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 - 2 juin 2008 à 16:15
A voir également:
- Python>>> Jongler avec les données
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Citizen code python avis - Accueil - Outils
- Trier des données excel - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
6 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
2 juin 2008 à 16:15
2 juin 2008 à 16:15
Le code suivant marche bien:
Ce qui affiche:
Attention: self n'est à utiliser que quand on créé une classe.
#!/usr/bin/python # -*- coding: iso-8859-1 -*- class clients: def __init__(self): self.clients=[] def newth(self,N,P,A,T): self.clients.append({'nom':N,'prenom':P,'adresse':A,'tel':T}) c = clients(); c.newth("HERMAN","Pee-wee","5 allée des corbeau","12345678") c.newth("COLLINS","Phil","7 rue des charmes","77665544") print c.clients
Ce qui affiche:
[{'nom': 'HERMAN', 'tel': '12345678', 'adresse': '5 all\xe9e des corbeau', 'prenom': 'Pee-wee'}, {'nom': 'COLLINS', 'tel': '77665544', 'adresse': '7 rue des charmes', 'prenom': 'Phil'} ]
Attention: self n'est à utiliser que quand on créé une classe.
Bonjour,
Petite question sur les dictionnaires.
Je sauvegarde un dictionnaire dans un fichier, mais je n'arrive pas à le lire!
Voici un bout de code:
Si il y un dictionnaire d'enrégistrer, et que je veux le lire avec la méthode readFile() j'obtient ce message:
File "G:\B63\SiteWeb\cgi-bin\Vins\log2.py", line 35, in readFile
self.clients = pickle.loads(f)
File "C:\Python23\lib\pickle.py", line 1393, in loads
file = StringIO(str)
TypeError: expected read buffer, file found
Quelqu'un a une idée?
OctetPlus
Petite question sur les dictionnaires.
Je sauvegarde un dictionnaire dans un fichier, mais je n'arrive pas à le lire!
Voici un bout de code:
clients = {} def AjouteUser(self): self.clients[self.user] = self def readFile(self): try: f=open(FICHIER,"r") self.clients = pickle.loads(f) f.close() except IOError: f=open(FICHIER,"w") f.close() def saveToFile(self): f=open(FICHIER,"w") pickle.dump(self.clients, f) f.close()
Si il y un dictionnaire d'enrégistrer, et que je veux le lire avec la méthode readFile() j'obtient ce message:
File "G:\B63\SiteWeb\cgi-bin\Vins\log2.py", line 35, in readFile
self.clients = pickle.loads(f)
File "C:\Python23\lib\pickle.py", line 1393, in loads
file = StringIO(str)
TypeError: expected read buffer, file found
Quelqu'un a une idée?
OctetPlus
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
15 sept. 2005 à 13:25
15 sept. 2005 à 13:25
Hello, OctetPlus.
Ton code me paraît curieux: Tu utilises le mot 'self' alors que tu n'as défini aucune classe. (à moins que le code ci-dessus soit un extrait de ta classe ?)
Exemple de (dé)sérialisation d'un dictionnaire:
Ton code me paraît curieux: Tu utilises le mot 'self' alors que tu n'as défini aucune classe. (à moins que le code ci-dessus soit un extrait de ta classe ?)
Exemple de (dé)sérialisation d'un dictionnaire:
import pickle # On créé un dictionnaire mondict = { 'bleu':5, 'rouge':7, 'vert':3 } # Sauvegarder: fichier = open('mondictionnaire.dat','w+b') pickle.dump(mondict,fichier) fichier.close() # Charger: fichier2 = open('mondictionnaire.dat','rb') mondict2 = pickle.load(fichier2) fichier2.close() print mondict2
OctetPlus
Messages postés
41
Date d'inscription
dimanche 11 septembre 2005
Statut
Membre
Dernière intervention
27 août 2007
8
17 sept. 2005 à 14:13
17 sept. 2005 à 14:13
Les fonctions sont des méthodes d'un objet, d'où "self"
Merci vous m'avez aidé!
Juste une petite question!
La fonction "open" prend un paramètre le type d'ouverture d'accès au fichier. Toutefois, j'utilisait seulement:
w : pour créer et écrire dans un fichier
r: pour lire
a: pour ajouetr dans un fichier
Mais là:
w+b : ???
rb : ????
Il y a d'autres comme ça?
OctetPlus
Merci vous m'avez aidé!
Juste une petite question!
La fonction "open" prend un paramètre le type d'ouverture d'accès au fichier. Toutefois, j'utilisait seulement:
w : pour créer et écrire dans un fichier
r: pour lire
a: pour ajouetr dans un fichier
Mais là:
w+b : ???
rb : ????
Il y a d'autres comme ça?
OctetPlus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
17 sept. 2005 à 18:08
17 sept. 2005 à 18:08
w : en écriture
+ : effacer le fichier s'il existe déjà
b : en mode binaire (sinon, mode texte)
+ : effacer le fichier s'il existe déjà
b : en mode binaire (sinon, mode texte)
tsic
Messages postés
20
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
20 juin 2008
2 juin 2008 à 12:26
2 juin 2008 à 12:26
Bonjour sebsauvage,
Je traite une liste de dictionnaire. prenons l'exemple suivant:
hh=[{'id':9,'u':0},{'id':8,'u':6},{'id':5,'u':1}]
1)def modif(self,val,ide):
=>comment pourrais-je accéder au contenu de la liste pour chercher l'élément qui a comme 'id'=ide pour changer la valeur de son u=val(nouvelle valeur)
dans plusieurs exemples que j'ai vu le seul accès à la liste est par son index (càd hh[0])
merci pour votre aide.
Je traite une liste de dictionnaire. prenons l'exemple suivant:
hh=[{'id':9,'u':0},{'id':8,'u':6},{'id':5,'u':1}]
1)def modif(self,val,ide):
=>comment pourrais-je accéder au contenu de la liste pour chercher l'élément qui a comme 'id'=ide pour changer la valeur de son u=val(nouvelle valeur)
dans plusieurs exemples que j'ai vu le seul accès à la liste est par son index (càd hh[0])
merci pour votre aide.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
2 juin 2008 à 13:12
2 juin 2008 à 13:12
S'il s'agit de stocker des couples (id,valeur), ta structure de données hh ne me semble pas vraiment optimale.
J'aurais fait:
Comme ça pour modifier une valeur, il aurait suffit de faire:
Avec ta structure, c'est moins pratique parcequ'il faut boucler sur tous les éléments:
J'aurais fait:
hh2 = { 9:0, 8:6, 5:1 }
Comme ça pour modifier une valeur, il aurait suffit de faire:
hh2[8]=3
Avec ta structure, c'est moins pratique parcequ'il faut boucler sur tous les éléments:
for d in hh: if d['id']==8: d['u'] = 3
tsic
Messages postés
20
Date d'inscription
jeudi 7 février 2008
Statut
Membre
Dernière intervention
20 juin 2008
>
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
2 juin 2008 à 15:53
2 juin 2008 à 15:53
Merci pour ta reponse mais ce n'est pas tout à fait ça.
Comme par exemple un client qui doit avoir un nom,un prénom, une adresse,un tel
Maintenant j'ai fait à chaque nouveau thread
//self.clients est une liste de dictionnaires qui représentent les coordonnées des différents clients.
def __init__(self):
self.clients=[]
def newth(N,P,A,T)
self.clients.append({'nom':N,'prenom':P,'adresse':A,'tel':T})
print self.client
La fct newth m'écrase tjs les données du précédent client et le remplace par les nouveaux données.
Pourquoi "append" ne fonctionne pas correctement.
Merci
Comme par exemple un client qui doit avoir un nom,un prénom, une adresse,un tel
Maintenant j'ai fait à chaque nouveau thread
//self.clients est une liste de dictionnaires qui représentent les coordonnées des différents clients.
def __init__(self):
self.clients=[]
def newth(N,P,A,T)
self.clients.append({'nom':N,'prenom':P,'adresse':A,'tel':T})
print self.client
La fct newth m'écrase tjs les données du précédent client et le remplace par les nouveaux données.
Pourquoi "append" ne fonctionne pas correctement.
Merci