Python rich tree from dict
from rich.console import Console
from rich.tree import Tree
paths: dict = {
'pyproject.toml': False,
'docs': {
'source': {
'conf.py': True, 'index.rst': False, 'use_guide.rst': False, 'api.rst': False
}
},
'mg_crp': {
'main.py': False
},
'.readthedocs.yaml': True,
'Makefile': True,
'docsd': {
'source': {
'conf.py': True, 'index.rst': False,
'use_guide.rst': False, 'api.rst': False
},
'sources': {
'conf.py': True, 'index.rst': False,
'use_guide.rst': False, 'api.rst': False
}
},
'.gitignore': False,
'README.md': False,
}
console_rich = Console()
tree = Tree("Path")
if __name__ == '__main__':
def _self(keys, _tree):
for _k, _v in keys.items():
if type(_v) != dict:
_tree.add(_k)
else:
_bk = _tree
_tree = _tree.add(_k)
_self(_v, _tree)
_tree = _bk
_self(paths, tree)
console_rich.print(tree)
Ответ
Path
├── pyproject.toml
├── docs
│ └── source
│ ├── conf.py
│ ├── index.rst
│ ├── use_guide.rst
│ └── api.rst
├── mg_crp
│ └── main.py
├── .readthedocs.yaml
├── Makefile
├── docsd
│ ├── source
│ │ ├── conf.py
│ │ ├── index.rst
│ │ ├── use_guide.rst
│ │ └── api.rst
│ └── sources
│ ├── conf.py
│ ├── index.rst
│ ├── use_guide.rst
│ └── api.rst
├── .gitignore
└── README.md
Ответы (1 шт):
Автор решения: Денис Кустов
→ Ссылка
def dict_to_tree(dict_: dict, tree_: Tree):
def _self(keys, _tree):
for _k, _v in keys.items():
if type(_v) != dict:
# Добавляем файл
_tree.add(_k)
else:
# Для того чтобы вернутся на папку назад
_bk = _tree
# Добавляем папку
_tree = _tree.add(_k)
# Перебираем ключи
_self(_v, _tree)
# Возвращаемся на папку назад
_tree = _bk
_self(dict_, tree_)
return tree_
console_rich = Console()
tree = Tree("Path")
res = dict_to_tree(paths, tree)
console_rich.print(res)