Liste le contenu d'un répertoire

Résolu
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 - 9 nov. 2004 à 09:56
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 - 9 nov. 2004 à 21:43
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

cs_Marvin Messages postés 77 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 19 juin 2006 1
9 nov. 2004 à 17:11
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.
1
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 1
9 nov. 2004 à 21:43
je te remercie cela fonctionne très bien.
0
Rejoignez-nous