您可以使用进行递归扫描
os.walk(),或者如果需要
DirEntry对象或更多控件,请编写如下的递归函数
scantree():
try: from os import scandirexcept importError: from scandir import scandir # use scandir PyPI module on Python < 3.5def scantree(path): """Recursively yield DirEntry objects for given directory.""" for entry in scandir(path): if entry.is_dir(follow_symlinks=False): yield from scantree(entry.path) # see below for Python 2.x else: yield entryif __name__ == '__main__': import sys for entry in scantree(sys.argv[1] if len(sys.argv) > 1 else '.'): print(entry.path)
笔记:
- PEP 471和os.scandir()docs中还有更多示例。
- 您也可以在for循环中添加各种逻辑,以跳过以
'.'
此类开头的目录或文件。 - 通常
follow_symlinks=false
,您希望在这样的is_dir()
递归函数中进行调用,以避免符号链接循环。 - 在Python 2.x上,将
yield from
行替换为:for entry in scantree(entry.path):yield entry



