使用Python遍历目录并打印目录树
前言
本文章将提供两个示例,目的是展示如何使用 Python 的 os 模块遍历当前目录下的所有文件和子目录,并形成类似下面简陋的树形输出。
| - a
|| - c
||| - text.txt
|| - e
||| - text.txt
|| - text.txt
| - b
|| - f
||| - text.txt
|| - g
||| - h
|||| - text.txt
||| - text.txt
|| - text.txt
| - example01-use-listdir-print-file-tree.py
| - example02-use-scandir-print-file-tree.py
方式一:使用 os.listdir() 方法
# 示例 - 打印文档树
# 最后修改时间:2020/12/21
# Run with Python3.8
# 1. 使用 os.listdir() 列出当前目录下的所有项目;
# 2、打印每个项目;
# 3、使用 os.path.isdir() 判断其中的每个项目是否为一个目录,如果是则进入这个目录并重复步骤123。
import os
def join(path, item):
if path == '.':
return item
return os.path.join(path, item)
def print_file_tree(path='.', level=1):
items = os.listdir(path)
for item in items:
fill_path = join(path, item)
print('|' * level, '-', item)
if os.path.isdir(fill_path):
print_file_tree(fill_path, level + 1)
if __name__ == '__main__':
print_file_tree()
方式二:使用 os.scandir() 方法
# 示例 - 打印文档树
# 最后修改时间:2020/12/21
# Run with Python3.8
# 1. 使用 os.scandir() 返回一个包含了条目对象的迭代器;
# 2、遍历迭代器,打印每个条目对象的 name;
# 3、使用条目对象的 is_dir() 方法判断当前的条目是否为一个目录,如果是则重复步骤123。
import os
def walk_file_tree(path='.', level=1):
items = os.scandir(path)
for item in items:
print('|' * level, '-', item.name)
if item.is_dir():
walk_file_tree(item, level + 1)
if __name__ == '__main__':
walk_file_tree()
结束
仅供参考,没准你有非常优雅的方式呢。