SoulisProgrammer
2021-03-13 21:37
采纳率: 66.7%
浏览 158
已采纳

如何用python中怎么把文件目录输出为字典

 现在有一个文件目录如下:

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': []
}

谢谢了。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题