python 十 文件操作 列出指定目录下文件树

方法 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:适合生成美观的文件树。
  • 生成文本文件:适合保存文件树的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值