Script en python

Résolu/Fermé
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 26 nov. 2008 à 13:19
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 - 27 nov. 2008 à 22:07
Bonjour,

Je recherche un code en python d'une fonction mapList dont le role est de recopier dans la variable Map passée en paramétre les lignes du fichier acess.txt sous forme de dictionnaires


Voici le contenu du fichier access.txt:

eco.doc:3
deco.doc:7
dico.doc:56
logo.doc:32
....


J'aimerais donc memoriser chaque ligne de ce fichier dans un tableau Map sous la forme d'un dictionnaire possedant 2 clés: "nom":le nom du fichier et "nb":son nombre d'accés

Voici mon debut de script

def mapList(map)
fichier=open("access.txt","r")
for ligne in fichier:
map="nom:"+ligne[0]"\n","nb:"+ligne[1]
return map
map[]

print MapList(map)



Est ce que cela est correct???
Merci pour vos reponses

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
26 nov. 2008 à 13:43
Salut,
Tu peux faire comme ça :
def mapList(map)
   fichier=open("access.txt","r")
   for ligne in fichier:
      tmp=ligne.split(':')
      map[tmp[0]]=int(tmp[1])
   return map

print mapList({})

La prochaine fois que tu postes, n'oublie pas d'utiliser la balise code qui se trouve à droite du bouton souligner. Ca permet de garder l'indentation, chose primordiale en python.
Cdlt
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 nov. 2008 à 09:43
Bonjour,
Merci pour l'aide

je le teste de suite
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 nov. 2008 à 13:32
Bonjour
le script ne fonctionne pas...
Si qqun pouvait m'aider..
Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
27 nov. 2008 à 13:42
Salut,
hormis le fait que j'ai oublié les ":" après le def et si ton fichier est rigoureusement comme tu le dis, c'est à dire aucune ligne blanche, que des lignes du genre toto:5, mon script marche. Je viens de tester avec succès sur mon ordi.
Après, si ton fichier access.txt contient des lignes blanches ou d'autres genre de lignes, tu peux améliorer mon script avec des exceptions.
Cdlt
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 nov. 2008 à 13:50
Bonjour,
Désolé, je suis tellement empétré a chercher l'erreur ailleurs que sur les ":" , que je ne m'en etais pas aperçu...

Je vais essayer cela ce soir aprés le boulot merci

Ceci etant ce qui est etrange c'est que tu n'apelle pas la variable map =[]
pour dire que tu initialise une liste pour ensuite appeler la fonction qui entrera les lignes du fichier dans cette liste "map"...

Je verrai cela ce soir

Merci bcp
A bientot
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011
27 nov. 2008 à 16:20
Ceci etant ce qui est etrange c'est que tu n'apelle pas la variable map =[]
Si si, je l'ai initialisée cette variable lors de l'appel de la fonction. :
mapList({})

D'ailleurs, juste une petite précision, un dictionnaire s'utilise avec des accolades. Les crochets c'est pour les listes ;)
Cdlt
0
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
27 nov. 2008 à 19:08
Bonsoir,
Je viens de tester le script...et voila ce qu'il me renvoit :


Traceback (most recent call last):
File "/home/bansan/Bureau/test.py", line 8, in <module>
print mapList({})
TypeError: mapList() takes no arguments (1 given)


voici le script que je lance:

def mapList():
fichier=open("/home/bansan/Bureau/nbAccesLecture","r")
for ligne in fichier:
tmp=ligne.split(":")
map[tmp[0]]=int(tmp[1])
return map

print mapList({})
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011
27 nov. 2008 à 19:29
Normal, t'as mal copié mon premier exemple !
def mapList(map):
Et je te redis une nouvelle fois. Quand tu postes, ne mets pas ton code en gras, mais choisi la balise codes (c'est trois boutons à droite), sinon c'est illisible surtout pour du python.
Cdlt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bansan Messages postés 122 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 8 mai 2011 1
27 nov. 2008 à 22:07
Merci beaucoup
Ca marche...

Je penserais aux balises code en effet..désolé pour cela..
Merci encore
0