In Java you can do File.listFiles()
and receive all of the files in a directory. You can then easily recurse through directory trees.
Is there an analogous way to do this in Python?
Yes, there is. The Python way is even better.
There are three possibilities:
1) Like File.listFiles():
Python has the function os.listdir(path). It works like the Java method.
2) pathname pattern expansion with glob:
The module glob contains functions to list files on the file system using Unix shell like pattern, e.g.
files = glob.glob('/usr/joe/*.gif')
3) File Traversal with walk:
Really nice is the os.walk function of Python.
The walk method returns a generation function that recursively list all directories and files below a given starting path.
An Example:
You can even on the fly remove directories from "dirs" to avoid walking to that dir: if "joe" in dirs: dirs.remove("joe") to avoid walking into directories called "joe".
import os
from os.path import join
for root, dirs, files in os.walk('/usr'):
print "Current directory", root
print "Sub directories", dirs
print "Files", files
listdir and walk are documented here. glob is documented here.