python 递归 目录 和 文件名 写入到 txt 树
  EjBjm8WvfVM8 2023年11月05日 169 0

Python递归目录和文件名写入到txt树

引言

在开发过程中,我们经常需要遍历目录中的文件和子目录,并将它们的结构以树形方式写入到txt文件中。Python中的递归函数非常适合解决这个问题,本文将介绍如何使用Python递归实现目录和文件名写入到txt树。

流程图

flowchart TD
    A[开始] --> B[遍历目录]
    B --> C[递归功能]
    C --> D[判断是否为目录]
    D --> E[获取目录名]
    D --> F[获取文件名]
    E --> G[写入目录名]
    F --> G[写入文件名]
    G --> H[递归子目录]
    H --> C
    C --> I[结束]
    I --> J[生成txt树形结构]
    J --> K[保存txt文件]

步骤详解

  1. 遍历目录:使用os.walk()方法遍历目录下的所有文件和子目录。
import os

def traverse_directory(root):
    for dirpath, dirnames, filenames in os.walk(root):
        # 递归功能
  1. 递归功能:在递归函数中,我们需要判断当前遍历的对象是目录还是文件,并做相应的处理。
def traverse_directory(root):
    for dirpath, dirnames, filenames in os.walk(root):
        for dirname in dirnames:
            # 获取目录名
            directory_path = os.path.join(dirpath, dirname)
            # 写入目录名
            write_to_txt(directory_path)

        for filename in filenames:
            # 获取文件名
            file_path = os.path.join(dirpath, filename)
            # 写入文件名
            write_to_txt(file_path)

        # 递归子目录
        for dirname in dirnames:
            traverse_directory(os.path.join(dirpath, dirname))
  1. 判断是否为目录:使用os.path.isdir()方法判断当前对象是否为目录。
def traverse_directory(root):
    for dirpath, dirnames, filenames in os.walk(root):
        for dirname in dirnames:
            directory_path = os.path.join(dirpath, dirname)
            # 判断是否为目录
            if os.path.isdir(directory_path):
                write_to_txt(directory_path)

        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            write_to_txt(file_path)

        for dirname in dirnames:
            traverse_directory(os.path.join(dirpath, dirname))
  1. 获取目录名和文件名:使用os.path.basename()方法获取目录名和文件名。
def traverse_directory(root):
    for dirpath, dirnames, filenames in os.walk(root):
        for dirname in dirnames:
            directory_path = os.path.join(dirpath, dirname)
            if os.path.isdir(directory_path):
                # 获取目录名
                directory_name = os.path.basename(directory_path)
                write_to_txt(directory_name)

        for filename in filenames:
            file_path = os.path.join(dirpath, filename)
            # 获取文件名
            file_name = os.path.basename(file_path)
            write_to_txt(file_name)

        for dirname in dirnames:
            traverse_directory(os.path.join(dirpath, dirname))
  1. 写入目录名和文件名:使用文件操作符with open()write()方法将目录名和文件名写入txt文件。
def write_to_txt(name):
    with open('tree.txt', 'a') as file:
        file.write(name + '\n')
  1. 生成txt树形结构:遍历目录和文件名后,生成树形结构。
def generate_tree():
    with open('tree.txt', 'r') as file:
        lines = file.readlines()
        for line in lines:
            indent = line.count('\t')
            print(' ' * indent + line.strip())
  1. 保存txt文件:将生成的树形结构保存到txt文件。
def save_tree_to_txt():
    with open('tree.txt', 'r') as file:
        lines = file.readlines()
        with open('tree_structure.txt', 'w') as new_file:
            new_file.writelines(lines)

代码总结

下面是完整的代码:

import os

def write_to_txt(name):
    with open('tree.txt', 'a') as file:
        file.write(name + '\n')

def traverse_directory(root):
    for dirpath, dirnames, filenames in os.walk(root):
        for dirname in dirnames:
            directory_path = os.path.join(dirpath
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Linux PAM和AppArmor 下一篇: python 查看lib版本
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   107   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   75   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   43   0   0 Python
EjBjm8WvfVM8