J'essaie d'obtenir le code pour répertorier tous les répertoires d'un dossier, changer de répertoire dans ce dossier et obtenir le nom du dossier actuel. Le code que j'ai jusqu'à présent est ci-dessous et ne fonctionne pas pour le moment. Il semble que j'obtienne le nom du dossier parent.
import os
for directories in os.listdir(os.getcwd()):
dir = os.path.join('/home/user/workspace', directories)
os.chdir(dir)
current = os.path.dirname(dir)
new = str(current).split("-")[0]
print new
J'ai également d'autres fichiers dans le dossier mais je ne veux pas les lister. J'ai essayé le code ci-dessous mais je ne l'ai pas encore fait fonctionner non plus.
for directories in os.path.isdir(os.listdir(os.getcwd())):
Quelqu'un peut-il voir où je me trompe?
Merci
Je l'ai fait fonctionner mais cela semble un peu rond.
import os
os.chdir('/home/user/workspace')
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for dirs in all_subdirs:
dir = os.path.join('/home/user/workspace', dirs)
os.chdir(dir)
current = os.getcwd()
new = str(current).split("/")[4]
print new
Cela affichera tous les sous-répertoires du répertoire courant:
print [name for name in os.listdir(".") if os.path.isdir(name)]
Je ne sais pas ce que vous faites avec split("-")
, mais peut-être que ce code vous aidera à trouver une solution?
Si vous voulez les chemins d'accès complets des répertoires, utilisez abspath
:
print [os.path.abspath(name) for name in os.listdir(".") if os.path.isdir(name)]
Notez que ces morceaux de code n'obtiendront que les sous-répertoires immédiats. Si vous voulez des sous-sous-répertoires et ainsi de suite, vous devez utiliser walk
comme d'autres l'ont suggéré.
import os
for root, dirs, files in os.walk(top, topdown=False):
for name in dirs:
print os.path.join(root, name)
La marche est un bon outil intégré pour ce que vous faites
Vous semblez utiliser python comme s'il s'agissait du Shell. Chaque fois que j'ai eu besoin de faire quelque chose comme ce que vous faites, j'ai utilisé os.walk ()
Par exemple, comme expliqué ici : [x [0] pour x dans os.walk (répertoire)]
Répertorier les entrées du répertoire en cours (for directories in os.listdir(os.getcwd()):
), puis interpréter ces entrées comme des sous-répertoires d'un répertoire entièrement différent (dir = os.path.join('/home/user/workspace', directories)
) est une chose qui semble louche.