Liste le contenu d'un répertoire

Résolu
Signaler
Messages postés
110
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
19 février 2009
-
Messages postés
110
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
19 février 2009
-
Le code suivant me génére un fichier vide, alors que mon répertoire contient bien un répertoire et 3 fichiers :

import os
import dircache

fic = open('List.txt','w')
list = listdir('C:\Temp')
fic.writelines(list)

en débug j'ai le message :
NameError: name 'listdir' is not defined

Alors que listdir se trouve dans dircache.

2 réponses

Messages postés
77
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2006
1
Bonjour, pour une fois que je peut aider...

Donc en fait, pour eviter les erreurs de noms (je ne sais plus comment sa s'apelle, quand il y a 2 fois le meme nom definit par deux programmes differents...) le python a utilisé un technique simple, on doit mettre le nom du module quand on appelle la methode.
Donc dans ton programme:

import os
import dircache

fic = open('List.txt','w')
list = dircache.listdir('C:\Temp')
fic.writelines(list)

Note: on peut eviter cela en important differemment:

import os
from dircache import listdir

fic = open('List.txt','w')
list = listdir('C:\Temp')
fic.writelines(list)

Bien que ce programme marche, il y a plusieurs erreurs:
Premierement, le fichier devrait etre fermé avec fic.close()
Deuxiemement, les nom des fichiers et dossier ne sont pas lisibles car il ne sont pas séparés.

J'ai donc fait un petit programme qui corrige les deux erreurs:

import os
from dircache import listdir

fic = open('List.txt','w')
list = listdir('C:\\')
size = list.index(list[-1],-1)
a = 0
while a <= size :
fic.write(list[a])
fic.write("\n")
a = a + 1
fic.close()

Je ne commente pas parceque c'est facile, mais si vous voulez quand meme les explications, je me ferait une joie de vous les faires.

Salut.
Messages postés
110
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
19 février 2009

je te remercie cela fonctionne très bien.