Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / repertoire sous repertoire os.path

repertoire sous repertoire os.path

Remonter à Forum général Python
  • repertoire sous repertoire os.path

    Envoyé par laurentE le 29 Janvier 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 [/code]
    • Re: repertoire sous repertoire os.path

      Envoyé par jacko le 1 Février 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 :

      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

      Envoyé par laurentE le 1 Février 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

      Envoyé par jacko le 2 Février 2010 à 13:51
      Le code suivant devrait traiter votre problème, si j'ai bien compris :

      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

      Envoyé par laurentE le 3 Février 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.
Rendu par Ploneboard