> 文章列表 > python实现获取当前目录下的树形结构

python实现获取当前目录下的树形结构

python实现获取当前目录下的树形结构

python实现获取当前目录下的树形结构

程序实现

在有些Linux上自带了tree命令来一树状结构显示一个目录,但是在有些linux上没有自带这个程序,所以这里用python写了一个小程序来实现这个功能,代码如下:

import osdef print_tree(folder_path, indent='', file_path=''):# 打印当前目录名称print(indent + os.path.basename(folder_path) + '/')# 写入文件with open(file_path, 'a') as f:f.write(indent + os.path.basename(folder_path) + '/' + '\\n')# 获取子目录和文件列表subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]files = [f.name for f in os.scandir(folder_path) if f.is_file()]# 递归打印子目录for i, subfolder in enumerate(sorted(subfolders)):# 判断是否为最后一个子目录if i == len(subfolders) - 1 and len(files) == 0:print_tree(subfolder, indent + '  ', file_path)else:print_tree(subfolder, indent + '│ ', file_path)# 打印文件for i, file in enumerate(sorted(files)):# 判断是否为最后一个文件if i == len(files) - 1:print(indent + '└── ' + file)with open(file_path, 'a') as f:f.write(indent + '└── ' + file + '\\n')else:print(indent + '├── ' + file)with open(file_path, 'a') as f:f.write(indent + '├── ' + file + '\\n')# 测试程序
folder_path = '/home/lihuanyu/code/03AdaBins'
tree_folder_path = folder_path + '/tree'
if not os.path.exists(tree_folder_path):os.mkdir(tree_folder_path)
file_path = tree_folder_path + '/tree.txt'
# 如果文件存在需要删除原有内容
if os.path.exists(file_path):os.remove(file_path)
with open(file_path, 'w') as f:print_tree(folder_path, file_path=file_path)

代码描述

  1. 首先导入 os 模块。

  2. 定义了一个名为 print_tree 的函数,接收三个参数:

  • folder_path:要打印树形结构的目录路径。
  • indent:缩进字符串,用于控制打印出来的树形结构缩进深度。
  • file_path:要将树形结构写入到的文件路径,如果该参数为空,则不会将树形结构写入到文件中。
  1. 打印当前目录名称。使用 os.path.basename 函数获取当前目录的名称,并使用 print 函数将其输出。

  2. 写入文件。使用 with open 将指定的文件以追加模式打开,并将当前目录的名称写入到文件中。

  3. 获取子目录和文件列表。使用 os.scandir 函数获取当前目录下所有子目录的路径和所有文件的名称,并分别保存到 subfoldersfiles 列表中。

  4. 递归打印子目录。遍历 subfolders 列表中的每个子目录,并使用递归调用 print_tree 函数来打印该子目录的树形结构,并根据子目录在列表中的位置以及是否有文件决定缩进字 符串。

  5. 打印文件。遍历 files 列表中的每个文件,并使用 print 函数打印该文件名,并根据文件在列表中的位置决定缩进字符串,并将文件名称写入到指定的文件中。

  6. 定义测试程序。首先指定要打印树形结构的目录路径 folder_path。然后创建一个用于保存树形结构的文件夹 tree_folder_path 和文件 file_path,并判断是否已存在该文件,如果存在则删除原有内容。最后使用 with open 打开文件并调用 print_tree 函数来输出并保存树形结构。

结果呈现

python实现获取当前目录下的树形结构