2017-08-24 6 views
1

Comment puis-je amener python uniquement aux répertoires de sortie via os.listdir, tout en spécifiant quel répertoire lister via raw_input?Utiliser os.listdir pour afficher uniquement les répertoires

Ce que je:

file_to_search = raw_input("which file to search?\n>") 

dirlist=[] 

for filename in os.listdir(file_to_search): 
    if os.path.isdir(filename) == True: 
     dirlist.append(filename) 

print dirlist 

Maintenant, cela fonctionne réellement si je entrée (via raw_input) le répertoire de travail courant. Cependant, si je mets quelque chose d'autre, la liste retourne vide. J'ai essayé de diviser et de vaincre ce problème mais individuellement chaque morceau de code fonctionne comme prévu.

+0

Pourriez-vous partager ce que vous avez entré dans le 'raw_input 'champ et quel OS vous utilisez? – MSeifert

+0

Juste pour le dossier depuis que la solution Jean-Francois a fonctionné: exemples de ce que j'ai entré: C: /, D:/X/Y, C: \, D: \ X \ Y, D: \\ X \\ Y OS: Windows – Felix

Répondre

2

qui est prévu, puisque os.listdir ne renvoie les noms des fichiers/dirs, donc ne sont pas des objets trouvés, à moins que vous utilisez dans le répertoire courant.

Vous avez à join dans le répertoire numérisé pour calculer le chemin complet pour que cela fonctionne:

for filename in os.listdir(file_to_search): 
    if os.path.isdir(os.path.join(file_to_search,filename)): 
     dirlist.append(filename) 

note la version de compréhension de la liste:

dirlist = [filename for filename in os.listdir(file_to_search) if os.path.isdir(os.path.join(file_to_search,filename))] 
+0

merci pour la réponse rapide, fonctionne parfaitement – Felix