Partage
  • Partager sur Facebook
  • Partager sur Twitter

os.listdir()

windows vs linux

Sujet résolu
    9 mai 2011 à 17:40:36

    bonjour,
    j'utilise
    if os.access(path,os.R_OK): os.listdir(path)
    
    pour lister les répertoires, jusque là normal ...
    sous linux, ça se passe à merveille, jusque là normal ... ^^
    mais sous windows, le résultat est différent. Non seulement os.listdir() me retourne plus de fichiers que ce que me donne le browser de windows(admettons des fichiers cachés), mais os.access(path,os.R_OK) ne filtre pas et os.listdir() raise une exception comme quoi l'accès est refusé.

    et je cherche une solution ... autre que try/except.

    merci.
    • Partager sur Facebook
    • Partager sur Twitter

    Python c'est bon, mangez-en. 

    Anonyme
      9 mai 2011 à 18:12:19

      Les 2 sont portables, c'est bizarre. Un problème de droit, essai en mode administrateur pour voir.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        9 mai 2011 à 19:18:42

        os.access semble effectivement ne pas fonctionner correctement sur Windows. Le problème perdure depuis plusieurs versions déjà.

        Je ne sais pas ce que tu cherche vraiment à faire, mais peut-être que os.walk te sera utile. Il ignore les dossiers inaccessibles sans déclencher d'exception. À voir. ;)

        [edit] Par contre, les forums que j'ai lu (ne datent pas de la dernière pluie) préconisent tous la gestion des exceptions.
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2011 à 19:33:56

          merci fred199, mais je crois que c'est pas ça.

          j'ai trouvé que les fichiers supplémentaires retournés par listdir() sont des "fichiers protégés du systeme" et nécessistent une autorisation spéciale.

          pour os.access() ils sont readables ...

          PsycoPy,

          effectivement je crois que try/except s'impose.
          os.walk() est bien pratique mais chez moi(j'ai dû mal l'utiliser) lève quand même une execption: Stop Iteration.

          ça concerne ce projet: http://www.pygame.org/project-pygamebr [...] 850-3252.html
          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

          Anonyme
            9 mai 2011 à 23:04:54

            StopIteration c'est lorsqu'il n'y plus rien à itérer. Dans une boucle for, cette exception ne sera pas déclenchée.

            for root, dirs, files in os.walk('C:\\'):
                # iter dans toute l'arborescence du lecteur C
            


            help(os.walk) Il y a un petit exemple sympa à la fin. ;)
            • Partager sur Facebook
            • Partager sur Twitter
              10 mai 2011 à 0:02:10

              merci,
              mais finalement j'ai opté pour le bloc try/except car j'ai besoin de savoir si le dossier est accessible ou pas;
              or os.walk() ne raise apparement rien et os.access() est inefficace sous windows.

              pour qui ça intéresse je remets le lien ...
              http://www.pygame.org/project-pygamebr [...] 850-3254.html
              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

              os.listdir()

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown