How do I get a list of all files (and directories) in a given directory in Python?


Solution 1:

This is a way to traverse every file and directory in a directory tree:

import os

for dirname, dirnames, filenames in os.walk('.'):
    # print path to all subdirectories first.
    for subdirname in dirnames:
        print(os.path.join(dirname, subdirname))

    # print path to all filenames.
    for filename in filenames:
        print(os.path.join(dirname, filename))

    # Advanced usage:
    # editing the 'dirnames' list will stop os.walk() from recursing into there.
    if '.git' in dirnames:
        # don't go into any .git directories.
        dirnames.remove('.git')

Solution 2:

You can use

os.listdir(path)

For reference and more os functions look here:

  • Python 2 docs: https://docs.python.org/2/library/os.html#os.listdir
  • Python 3 docs: https://docs.python.org/3/library/os.html#os.listdir

Solution 3:

Here's a helper function I use quite often:

import os

def listdir_fullpath(d):
    return [os.path.join(d, f) for f in os.listdir(d)]

Solution 4:

import os

for filename in os.listdir("C:\\temp"):
    print  filename