Dùng os.walk() duyệt đệ quy, in đường dẫn tuyệt đối hoặc tương đối.
Ví dụ in cây đơn giản
import os
def print_tree(root):
for dirpath, dirnames, filenames in os.walk(root):
# Tính độ sâu để indent
level = dirpath.replace(root, '').count(os.sep)
indent = ' ' * level
print(f"{indent}{os.path.basename(dirpath)}/")
for f in filenames:
print(f"{indent} {f}")
print_tree('.')
Kết quả mẫu
.
file1.txt
subdir/
file2.txt
subsub/
file3.txt
Python 3.12+: os.walk(top_down=True, onerror=...)
Tree đẹp hơn: dùng thư viện tree (external) hoặc rich.tree.
from rich.tree import Tree
from pathlib import Path
tree = Tree(".")
for p in Path('.').rglob('*'):
tree.add(str(p.relative_to('.')))
print(tree)