方法 1:使用 os
模块
os
模块是处理目录和文件的经典选择。
import os
def list_directory_tree(path, level=0):
# 显示当前目录名称,按缩进表示层级
print(" " * level + f"|-- {os.path.basename(path)}")
if os.path.isdir(path):
for item in os.listdir(path):
item_path = os.path.join(path, item)
# 递归遍历子目录和文件
list_directory_tree(item_path, level + 1)
# 指定目录路径
root_path = "/path/to/directory"
list_directory_tree(root_path)
输出示例:
|-- directory
|-- file1.txt
|-- subdir
|-- file2.txt
方法 2:使用 pathlib
模块
pathlib
提供更现代和直观的路径处理。
from pathlib import Path
def list_directory_tree(path, level=0):
# 显示当前目录名称,按缩进表示层级
print(" " * level + f"|-- {path.name}")
if path.is_dir():
for item in path.iterdir():
# 递归遍历子目录和文件
list_directory_tree(item, level + 1)
# 指定目录路径
root_path = Path("/path/to/directory")
list_directory_tree(root_path)
方法 3:生成文件树保存为文本
将文件树保存为文本文件,便于查看。
import os
def list_directory_tree_to_file(path, level=0, file=None):
# 写入文件树到文本文件
file.write(" " * level + f"|-- {os.path.basename(path)}\n")
if os.path.isdir(path):
for item in os.listdir(path):
item_path = os.path.join(path, item)
list_directory_tree_to_file(item_path, level + 1, file)
# 指定目录路径和输出文件
root_path = "/path/to/directory"
output_file = "file_tree.txt"
# 保存文件树到文本
with open(output_file, "w", encoding="utf-8") as f:
list_directory_tree_to_file(root_path, file=f)
print(f"文件树已保存到 {output_file}")
方法 4:美化输出(支持颜色)
可以用 rich
库生成一个更美观的文件树。
安装 rich:
pip install rich
使用 rich:
from rich.tree import Tree
from rich.console import Console
from pathlib import Path
def build_tree(path, parent_tree):
# 添加当前目录和文件
for item in path.iterdir():
if item.is_dir():
# 如果是目录,递归构建子树
branch = parent_tree.add(f"[blue]{item.name}[/blue]")
build_tree(item, branch)
else:
# 如果是文件,添加到当前树节点
parent_tree.add(f"[green]{item.name}[/green]")
# 构建并打印文件树
def print_directory_tree(path):
root = Path(path)
tree = Tree(f"[bold yellow]{root.name}[/bold yellow]")
build_tree(root, tree)
console = Console()
console.print(tree)
# 指定目录路径
print_directory_tree("/path/to/directory")
输出示例:
directory
├── file1.txt
├── file2.py
└── subdir
├── file3.md
└── file4.jpg
总结
os
:经典方法,简单高效。pathlib
:现代化路径处理,更直观。rich
:适合生成美观的文件树。- 生成文本文件:适合保存文件树的结果。