[英]Get the file hierarchy of a directory by the file path with Python
这是我的问题。 我使用os.walk来获取特定目录下的所有文件路径,并将该路径存储在这样的文件中
/indexes/attachment/CCTBAU/CCTBAU-13/87009
/indexes/attachment/CCTBAU/CCTBAU-19/91961
/indexes/attachment/CCTBAU/CCTBAU-19/thumbs/_thumb_91961.png
/indexes/attachment/CCTBAU/CCTBAU-11/86413
/indexes/attachment/CCTBAU/CCTBAU-11/thumbs/_thumb_86412.png
/indexes/attachment/CCTBAU/CCTBAU-11/thumbs/_thumb_86413.png
/indexes/attachment/CCTBAU/CCTBAU-12/86614
/indexes/attachment/CCTBAU/CCTBAU-16/90240
/indexes/attachment/CCTBAU/CCTBAU-17/90241
/indexes/attachment/ACD/ACD-200/91345
/indexes/attachment/ACD/ACD-200/96305
/indexes/attachment/ACD/ACD-200/99169
/indexes/attachment/ACD/ACD-201/91344
/indexes/attachment/ACD/ACD-202/91346
/indexes/attachment/ACD/ACD-197/88916
/indexes/attachment/ACD/ACD-189/73799
/indexes/attachment/ACD/ACD-38/60709
/indexes/attachment/ACD/ACD-198/88918
现在,我想通过读取文件中的所有路径来获取文件层次结构,这意味着我读取了文件并获取了所有路径,然后我就知道文件层次结构是
index
|--attachment
|-----ACD
| |---ACD-200
| |---...
|
|-----CCTBAU
|----CCTBAU-13
|----...
谁可以提供帮助? 提前致谢!
我使用os.listdir,代码如下:
1 import os
2
3 def PrintDir(dir, depth, prefix = ' '):
4 contents = os.listdir(dir)
5 paths = filter(lambda x : os.path.isdir(os.path.join(dir, x)), contents)
6 files = [x for x in contents if x not in paths]
7 if not paths and not files:
8 return
9
10 print depth * prefix + '|----' + os.path.basename(dir) \
if depth != 0 else os.path.basename(dir)
11 for subdir in paths:
12 PrintDir(os.path.join(dir, subdir), depth+1, prefix)
13 for filename in files:
14 print depth * prefix + '|----' + filename
15
16 PrintDir('~/testdir', 0)
您还可以使用os.walk来获取所需的内容,因为os.walk的返回值是一个元组:根,目录,文件。
测试用例是:
testdir / a / aa / aaa testdir / b / bb / bbb testdir / b / bb.txt
和aaa,bbb,bb.txt是文件。
输出为:
testdir
|----a
|----aa
|----aaa
|----b
|----bb
|----bbb
|----bb.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.