2015-03-23 16 views
7

Wie kann ich die Ordner-Namen in einem Verzeichnis mit Python erhalten?Python-Ordner-Namen im Verzeichnis

Ich möchte alle Unterordner in einer Liste speichern, um mit den Namen danach zu arbeiten, aber ich weiß nicht, wie man die Unterordner Namen liest?

Dank für Sie

Antwort

10

Sie helfen

os.walk() können
# !/usr/bin/python 

import os 

directory_list = list() 
for root, dirs, files in os.walk("/path/to/your/dir", topdown=False): 
    for name in dirs: 
     directory_list.append(os.path.join(root, name)) 

print directory_list 

EDIT

Wenn Sie nur die erste Stufe wollen und nicht wirklich „Spaziergang“ durch die Unterverzeichnisse, es ist sogar weniger Code:

import os 

root, dirs, files = os.walk("/path/to/your/dir").next() 
print dirs 

Das ist nicht wirklich, was os.walk gemacht wird. Wenn Sie wirklich nur eine Ebene von Unterverzeichnissen möchten, können Sie auch os.listdir() wie Yannik Ammann verwenden vorgeschlagen:

root='/path/to/my/dir' 
dirlist = [ item for item in os.listdir(root) if os.path.isdir(os.path.join(root, item)) ] 
print dirlist 
+0

danke. Aber dieser Code listet nur die Namen auf, aber ich kann sie nicht in einem Array oder einer Liste speichern? – HightronicDesign

+0

Sicher kannst du ... Ich habe meine Antwort bearbeitet, also fügt sie die Einträge zu einer Liste hinzu. –

+0

ahh wirklich cool Feature, es gibt immer noch ein Problem, ich bekomme die ganze Zeit die komplette Struktur aller Unterverzeichnisse im Pfad, ich brauche nur die erste Struktur: C: \ MyPath und in diesem Ordner habe ich folder1, folder2, folder3 .... und ich brauche nur die folder1, folder2 etc Namen und nicht die Unterordner von folder1 ..... – HightronicDesign

2

Sie os.listdir()here a link to the docs

Warning Dateien und Verzeichnisse gibt

Beispiel verwenden können:

import os 

path = 'pyth/to/dir/' 
dir_list = os.listdir(path) 

Update: Sie müssen überprüfen, ob die zurückgegebenen Namen sind Verzeichnisse oder Dateien

import os 

path = 'pyth/to/dir/' 
# list of all content in a directory, filtered so only directories are returned 
dir_list = [directory for directory in os.listdir(path) if os.path.isdir(path+directory)] 
+0

'os.listdir()' listet auch Dateien auf, nicht nur Verzeichnisse. –

+0

es tut? warum würde es listdir heißen, wenn es Dateien zurückgibt? – yamm

+0

Da er den Inhalt eines Verzeichnisses auflistet :) –

1

Verwenden os.walk(path)

import os 

path = 'C:\\' 

for root, directories, files in os.walk(path): 
    for directory in directories: 
     print os.path.join(root, directory) 
+0

bitte, wie ich in der Lage bin nur 2 nach unten Ebenen (Unterverzeichnisse) von Verzeichnissen drucken ... – Ossama

+0

import os path = ‚C: \\‘ für root, Verzeichnisse, Dateien in os.walk (Pfad): wenn root.replace (Pfad, '') .count (os.sep) <= 2: Stamm drucken – srekcahrai

3

Beginnend mit Python 3.4, können Sie auch die neuen pathlib Modul verwenden:

from pathlib import Path 

p = Path('some/folder') 
subdirectories = [x for x in p.iterdir() if x.is_dir()] 

print(subdirectories) 
3

Sie sollten os zuerst importieren.

import os 
files=[] 
files = [f for f in sorted(os.listdir(FileDirectoryPath))] 

Sie Dies würde Liste mit allen Dateien in der FileDirectoryPath geben sortiert.

Verwandte Themen