2010-09-27 17 views
2
#Moving up/down dir structure 
print os.listdir('.') 
print os.listdir('..') 
print os.listdir('../..') 

D'autres façons? J'ai sauvé les dirs avant d'aller plus loin, puis de réaffecter plus tard.Façons de monter et descendre la structure dir en Python

+3

Vous devez indiquer ce que vous essayez de faire, parce que cela ne se déplace pas vers le haut ou vers le bas des hiérarchies de répertoires, il est une simple énumération le contenu divers répertoires. 'os.chdir' est comment vous changez de répertoire. –

+0

Essentiellement, j'essaie d'écrire un programme simple qui vérifie tous les répertoires dans un chemin et supprime ceux qui sont vides. – shawn

Répondre

3

Cela devrait faire l'affaire:

for root, dirs, files in os.walk(os.getcwd()): 
    for name in dirs: 
     try: 
      os.rmdir(os.path.join(root, name)) 
     except WindowsError: 
      print 'Skipping', os.path.join(root, name) 

Cela marche le système de fichiers à partir du répertoire du script est exécuté à partir. Il supprime les répertoires vides à chaque niveau.

+0

et si vous vouliez déplacer tous les fichiers dans le répertoire racine? – shawn

+0

Je suis juste curieux. Je l'ai vraiment fonctionné, mais c'était comme 80 lignes de code ... lol – shawn

1

Bien sûr, il y a - thre sont tous les deux os.walk - qui retourne avec les sous-répertoires tuples et les fichiers tehrein comme os.path.walk, qui prend une fonction de rappel à appeler pour chaque fichier dans une structure de répertoire.

Vous pouvez consulter l'aide en ligne pour les deux fonctions.

+0

btw. pour vous obtenir cette réponse, j'ai déduit que vous voulez faire cela uniquement en raison de votre "sauver dirs avant d'aller plus profond" commentaire. Si vous voulez juste changer de répertoire, os.chdir est évidemment la bonne réponse. – jsbueno

+0

Eh bien, je suppose que j'allais essayer d'avoir des places temporaires. Par exemple, je vais beaucoup changer entre le parent et l'enfant dans certaines méthodes. Je pense que je vais juste essayer de sauver l'état. Merci – shawn

0

« et si vous voulez déplacer tous les fichiers jusqu'au répertoire racine? »

Vous pouvez faire quelque chose comme:

for root, dirs, files in os.walk(os.getcwd()): 
    for f in files: 
     try: 
      shutil.move(os.path.join(root, f), os.getcwd()) 
     except: 
      print f, 'already exists in', os.getcwd() 
Questions connexes