现在有一个文件目录如下:
path = r'D:\test'
cmd --> tree D:\test /f
D:\TEST
├─1
│ ├─1
│ │ 1.txt
│ │ 2.txt
│ │ 3.txt
│ │
│ ├─2
│ └─3
│ 1.bmp
│
├─2
│ 1.docx
│
└─3
现在就是想用python递归文件夹,将这个文件目录转为dict类型,如下:
path_dict = {'D:\\test\\1': {'D:\\test\\1\\1': ['D:\\test\\1\\1\\1.txt','D:\\test\\1\\1\\2.txt','D:\\test\\1\\1\\3.txt',],'D:\\test\\1\\2': [],'D:\\test\\1\\3': ['D:\\test\\1\\3\\1.bmp'],},'D:\\test\\2': ['D:\\test\\2\\1.docx'],'D:\\test\\3': []}
from pathlib import Path
result = []
def scan_file(path):
result = {}
dirList = [str(x) for x in Path(path).iterdir() if x.is_dir()]
for v in dirList:
# Path('.').glob('*.jpg') 不使用递归
result[v] = [str(i) for i in Path(v).glob('**/*.*')]
return result
上面的代码虽然可以做到,但目录下的空文件夹不见了,想尽可能让下面树形输出的目录跟文件资源管理器看到的一样
并且可以用以下代码:
print(json.dumps(path_dict, indent=4, ensure_ascii=False))
将path_dict输出成:
{
'D:\\test\\1': {
'D:\\test\\1\\1': [
'D:\\test\\1\\1\\1.txt',
'D:\\test\\1\\1\\2.txt',
'D:\\test\\1\\1\\3.txt',
],
'D:\\test\\1\\2': [],
'D:\\test\\1\\3': [
'D:\\test\\1\\3\\1.bmp'
],
},
'D:\\test\\2': [
'D:\\test\\2\\1.docx'
],
'D:\\test\\3': []
}
谢谢了。