本系列文章配套代码获取有以下两种途径:
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1i9F6oV1J5oZnIsOASDs0gQ?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_mini_program
脚本需求:
---test_dir
| doc_1.doc
|
+---sub_dir_1
| | docx_3.docx
| | png_3.png
| |
| +---sub_dir_11
| | gif_3.gif
| | jpg_2.jpg
| |
| ---sub_dir_12
| md_4.md
| ppt_2.ppt
|
---sub_dir_2
| doc_2.doc
| pptx_3.pptx
|
---sub_dir_21
jpg_3.jpg
ppt_3.ppt
使用CMD:
-
打开命令提示符(CMD):
-
使用 tree 命令:
TREE [drive:][path] [/F] [/A]
-
[drive:][path]:
-
/F:
-
/A:
tree > directory_tree.txt
Python代码:
-
方法一:
# 导入os模块,用于操作文件和目录
import os
def print_directory_tree(path, prefix='', is_root=False, output_file=None):
"""
定义函数,用于打印目录树
参数:
- path: 要打印的目录路径
- prefix: 前缀字符串,用于表示当前层级的缩进
- is_root: 标记是否为根目录,用于控制输出格式
- output_file: 文件对象,用于写入目录树输出(如果为None,则打印到控制台)
"""
# 如果是根目录,打印根目录名称
if is_root:
directory_name = os.path.basename(path)
print(f"{prefix}{directory_name}/")
if output_file is not None:
output_file.write(f"{prefix}{directory_name}/n")
# 获取path目录下的所有文件和子目录
items = os.listdir(path)
# 遍历目录下的所有项
for item in items:
# 获取当前项的完整路径
item_path = os.path.join(path, item)
# 如果当前项是一个文件
if os.path.isfile(item_path):
# 打印文件名,使用├──表示是分支
print(f"{prefix}├── {item}")
if output_file is not None:
output_file.write(f"{prefix}├── {item}n")
# 如果当前项是一个目录
elif os.path.isdir(item_path):
# 打印目录名,使用└──表示是分支
print(f"{prefix}└── {item}/")
if output_file is not None:
output_file.write(f"{prefix}└── {item}/n")
# 递归调用函数,打印子目录的树
print_directory_tree(item_path, prefix + " ", False, output_file)
# 输入要打印的文件夹路径
folder_path = './test_dir'
# 然后保存到txt文件中
with open('directory_tree_2.txt', 'w', encoding='utf-8') as f:
print_directory_tree(folder_path, is_root=True, output_file=f)
-
代码二:
import os
def print_directory_tree(path, prefix=''):
"""
打印指定路径下的目录树。
参数:
- path: 要打印的目录路径。
- prefix: 前缀字符串,用于控制输出格式(本例中未使用,但保留参数以备扩展)。
"""
# 使用os.walk遍历目录树,它返回一个三元组
for root, dirs, files in os.walk(path):
# 计算当前目录与根目录之间的路径深度
level = root.replace(path, '').count(os.sep)
# 根据深度计算缩进空格数,每层缩进4个空格
indent = ' ' * level
# 如果不是根目录,则添加垂直线前缀和缩进
if level > 0:
# 打印当前目录名,使用└──表示当前分支的结束
print(f'{''}{indent}└──{os.path.basename(root)}/')
# 如果是根目录,则不添加垂直线前缀
else:
# 打印根目录名,不使用└──
print(f'{''}{indent}{os.path.basename(root)}/')
# 遍历当前目录下的所有文件
for f in files:
# 打印文件名,使用├──表示分支
# ' ' * level用于创建与目录名对齐的空格
print(f'{''}{indent}{' ' * level}├──{f}')
# 设置要打印的目录路径
directory = './test_dir'
# 调用函数,开始打印目录树
print_directory_tree(directory)


本篇文章来源于微信公众号: 码农设计师