在Java中,您可以执行File.listFiles()
并接收目录中的所有文件.然后,您可以轻松地通过目录树进行递归.
在Python中有类似的方法吗?
就在这里.Python的方式更好.
有三种可能性:
1)像File.listFiles():
Python具有os.listdir(path)功能.它的工作方式与Java方法类似.
2)使用glob进行路径名模式扩展:
模块glob包含使用Unix shell模式在文件系统上列出文件的函数,例如
files = glob.glob('/usr/joe/*.gif')
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您甚至可以动态删除"dirs"中的目录以避免走到该目录:如果dirs中的"joe":dirs.remove("joe")以避免进入名为"joe"的目录.
listdir和walk记录在这里.glob记录在这里.
作为一个长期的Pythonista,我不得不说std库中的路径/文件操作函数是低于标准的:它们不是面向对象的,它们反映了一个过时的,自我包装的OS系统函数 - 没有 - 思想哲学.我衷心地推荐'path'模块作为包装器(如果你必须知道的话,可以使用os,os.path,glob和tempfile):更好更多和OOPy:http://pypi.python.org/pypi/path.py /2.2
这是带路径模块的walk():
dir = path(os.environ['HOME']) for f in dir.walk(): if f.isfile() and f.endswith('~'): f.remove()