Python folder names in the directory

Question:

how can i get the folder names existing in a directory using Python ?

I want to save all the subfolders into a list to work with the names after that but i dont know how to read the subfolder names ?

Thanks for you help

Asked By: HightronicDesign

||

Answers:

You can use 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

If you only want the first level and not actually “walk” through the subdirectories, it is even less code:

import os

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

This is not really what os.walk is made for. If you really only want one level of subdirectories, you can also use os.listdir() like Yannik Ammann suggested:

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

You can use os.listdir() here a link to the docs

Warning returns files and directories

example:

import os

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

update: you need to check if the returned names are directories or files

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)]
Answered By: yamm

Use 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)
Answered By: mailtosumitrai

Starting with Python 3.4, you can also use the new pathlib module:

from pathlib import Path

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

print(subdirectories)
Answered By: poke

You should import os first.

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

This would give you list with all files in the FileDirectoryPath sorted.

Answered By: titto.sebastian

I use os.listdir

Get all folder names of a directory

folder_names = []
for entry_name in os.listdir(MYDIR):
    entry_path = os.path.join(MYDIR, entry_name)
    if os.path.isdir(entry_path):
        folder_names.append(entry_name)

Get all folder paths of a directory

folder_paths = []
for entry_name in os.listdir(MYDIR):
    entry_path = os.path.join(MYDIR, entry_name)
    if os.path.isdir(entry_path):
        folder_paths.append(entry_path)

Get all file names of a directory

file_names = []
for file_name in os.listdir(MYDIR):
    file_path = os.path.join(MYDIR, file_name)
    if os.path.isfile(file_path):
        file_names.append(file_name)

Get all file paths of a directory

file_paths = []
for file_name in os.listdir(MYDIR):
    file_path = os.path.join(MYDIR, file_name)
    if os.path.isfile(file_path):
        file_paths.append(file_path)
Answered By: oxidworks

Python 3.x: If you want only the directories in a given directory, try:

import os
search_path = '.'   # set your path here.
root, dirs, files = next(os.walk(search_path), ([],[],[]))
print(dirs)

The above example will print out a list of the directories in the current directory like this:

['dir1', 'dir2', 'dir3']

The output contains only the sub-directory names.

If the directory does not have sub-directories, it will print:

[]

os.walk() is a generator method, so use next() to only call it once. The 3-tuple of empty strings is for the error condition when the directory does not contain any sub-directories because the os.walk() generator returns 3-tuples for each layer in the directory tree. Without those, if the directory is empty, next() will raise a StopIteration exception.

For a more compact version:

dirs = next(os.walk(search_path), ([],[],[]))[1]
Answered By: Traveler_3994

For python 3 I’m using this script

import os

root='./'
dirlist = [ item for item in os.listdir(root) if os.path.isdir(os.path.join(root, item)) ]
for dir in dirlist:
        print(dir)
Answered By: Tech
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.