2015-03-23 12 views

Odpowiedz

10

Można użyć os.walk()

# !/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

Jeśli chcesz tylko pierwszy poziom, a nie faktycznie „spacer” Poprzez podkatalogów, to nawet mniej kodu:

import os 

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

To naprawdę nie jest to, co zostało zrobione os.walk. Jeśli naprawdę chcą tylko jednego poziomu podkatalogów, można również użyć os.listdir() jak Yannik Ammann zasugerował:

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

dzięki. Ale ten kod to tylko lista nazw, ale nie mogę ich zapisać w tablicy lub liście? – HightronicDesign

+0

Oczywiście, że mogę ... Edytowałem swoją odpowiedź, więc dołącza wpisy do listy. –

+0

ahh naprawdę fajna funkcja, wciąż jest jeden problem, otrzymuję cały czas całe drzewo wszystkich podkatalogów na ścieżce, potrzebuję tylko pierwszej struktury: C: \ MyPath iw tym folderze mam folder1, folder2, folder3 ... i potrzebuję tylko folderów1, folderów2 itd. Nazw, a nie podfolderów folderu1 ..... – HightronicDesign

2

Można użyć os.listdir()here a link to the docs

Ostrzeżenie zwraca plików i katalogów

przykład:

import os 

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

aktualizacja: trzeba sprawdzić, czy zwrócone nazwy są katalogi lub pliki

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()' wyświetla również pliki, nie tylko katalogi. –

+0

to robi? dlaczego byłby nazwany listdir, jeśli zwróci pliki? – yamm

+0

Ponieważ wymienia zawartość katalogu :) –

1

Stosować 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

proszę jak jestem w stanie wydrukować tylko 2 poziomy w dół (podkatalogi) katalogów ... – Ossama

+0

import os path = „C: \\” dla korzenia, katalogi, pliki w os.walk (ścieżka): jeśli root.replace (ścieżka, '') .count (os.sep) <= 2: drukuj root – srekcahrai

3

Począwszy Pythonie 3.4, można również korzystać z nowej pathlib moduł:

from pathlib import Path 

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

print(subdirectories) 
3

Najpierw należy zaimportować os.

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

To daje listę wszystkich plików w FileDirectoryPath klasyfikowane.

Powiązane problemy