repertoire sous repertoire os.path

Document Actions
Réponses: 4   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

repertoire sous repertoire os.path

Posté par laurentE le 29/01/2010 13:27
bonjour
je cherche a déterminer dans des dossiers la présence d'un fichier et de déterminer que le sous-dossier soit bien vide ( anomalie si contraire).

je tente à l'aide d'un boucle For et os.walk la lecture des repertoires et d'y associer ma condition, mais je bute car le if est restrictrif et ne permet pas de
calculer la le poids de chaque sous dossier.

Auriez vous une idée de mon erreur .
début de mon projet.

for (path, dirs, files) in os.walk(folder):
for file in files:
a = '\\export\\' + file
print file
if file == 'MARQUEUR':

filename = path + a
For (path2, dirs2, files2) in os.walk(filename):
for file in files2:
print path2
folder_size += os.path.getsize(filename)
print folder_size

Re: repertoire sous repertoire os.path

Posté par jacko le 01/02/2010 14:30
Bonjour,

1/ Tout d'abord, apprenez à utiliser les balises[code ] et[/code ] dans ce forum, ainsi que la fonction "Aperçu", afin de préserver l'indentation du code, fondamentale en Python. Sans cela, votre code est illisible.
Je suppose que votre code s'indente comme suit :
code:
for (path, dirs, files) in os.walk(folder): 
  for file in files: 
    a = '\\export\\' + file 
    print file 
    if file == 'MARQUEUR': 
      filename = path + a 
      For (path2, dirs2, files2) in os.walk(filename): 
        for file in files2: 
          print path2 
          folder_size += os.path.getsize(filename) 
          print folder_size

Votre code fait ceci :
- dans le répertoire folder et tous ses sous-répertoires récursivement,
- s'il existe (dans un sous-répertoire "path" ) un fichier de nom "MARQUEUR",
- alors vous explorez le sous-répertoire "path\export\MARQUEUR" (filename = path+a, avec a='\\export\\'+file, avec file=='MARQUEUR') (vous
supposez que ce répertoire existe).
- dans celui-ci, pour chaque fichier trouvé (file in files2), vous additionnez la taille...
du répertoire (getsize(filename) ; c'est-à-dire 0).

Je ne pense pas que ce soit exactement ce que vous souhaitez faire...

Re: repertoire sous repertoire os.path

Posté par laurentE le 01/02/2010 17:20
Mon problème réside à constituer le chemin du sous répertoire à associer à chaque répertoire utilisateur ; pour être plus clair, voici l’arborescence de ce dossier. (le sous-dossier « export » existe bien dans tous les cas) :

Folder/utilisateur1/export
Folder/utilisateur2/export

Pour chaque dossier utilisateur, je cherche à déterminer dans le cas de la présence du fichier marqueur, que le sous-dossier export soit bien vide par la méthode de la taille ( os.size = 0) ou nombre de fichier avec len.

PS : mille excuses pour les balises code /code .

Re: repertoire sous repertoire os.path

Posté par jacko le 02/02/2010 13:51
Le code suivant devrait traiter votre problème, si j'ai bien compris :
code:
import os
for usr in os.listdir(folder):
  dusr=os.path.join(folder,usr)
  exp=os.path.join(dusr,'export')
  if os.path.isdir(dusr) \
    and os.path.isfile(os.path.join(dusr,'MARQUEUR')) \
    and os.path.isdir(exp):
      if len(os.listdir(exp))>0:
        print "Répertoire %s non vide" % exp

qq remarques :
- getsize() ne permet pas de savoir si un répertoire est vide ou non. Il faut utiliser len(listdir()).
- on suppose que tous les répertoires utilisateurs sont directement sous "folder". D'où utilisation de listdir() plutôt que walk().

Re: repertoire sous repertoire os.path

Posté par laurentE le 03/02/2010 13:21
Merci beaucoup c’est exactement ce que je cherchais à faire.

J’étudie de près ce script, c’est pour moi une très belle leçon de python, merci encore de cette belle démonstration.

Python.org : Le site officiel du langage Python.
Zope.org : Le site web officiel de Zope.
Daily Python-URL : Actus de l'univers Python.
Tribute to Zyons : Zyons notre ami et membre fondateur de l'Afpy, nous quittait en 2005.