在 https:/stackoverflow.coma33135143 递归返回目录结构中的所有文件名的解决方案如下图所示,我还需要目录结构中每个子目录的信息以及文件和目录的完整路径名。
我还需要目录结构中每个子目录的信息以及文件和目录的完整路径名。因此,如果我有这个结构。
ls -1 -R
.:
a
b
./a:
fileC
./b:
我需要:
/a
/b
/a/fileC
我需要如何改变上面的答案来实现这个方案?为了方便完成,下面给出答案。
try:
from os import scandir
except ImportError:
from scandir import scandir # use scandir PyPI module on Python < 3.5
def 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 entry
if __name__ == '__main__':
import sys
for entry in scantree(sys.argv[1] if len(sys.argv) > 1 else '.'):
print(entry.path)
无论它是否是一个目录,你都应该产生当前条目。如果它是一个目录,你 还 递归来获取内容。
def scantree(path):
"""Recursively yield DirEntry objects for given directory."""
for entry in scandir(path):
yield entry
if entry.is_dir(follow_symlinks=False):
yield from scantree(entry.path)