欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python生成目录树,不想在python中调用shell

程序员文章站 2022-03-29 20:57:30
不想在python中调用shell,需要实现一个类似linux tree命令的功能 [root@python_test OcApi]# tree . |-- OCente...
不想在python中调用shell,需要实现一个类似linux tree命令的功能
[root@python_test OcApi]# tree
.
|-- OCenter
|   |-- Lib
|   |   |-- Mysql.php
|   |   `-- Think.php
|   |-- Model
|   |   |-- Base.php
|   |   `-- User.php
|   `-- OCenter.php
`-- oc.php

代码示例如下
#coding:utf-8

import os

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        if not level:
            continue
        dir_indent = "|   " * (level-1) + "|-- "
        file_indent = "|   " * level + "|-- "
        print('{}{}'.format(dir_indent, os.path.basename(root)))
        for f in files:
            print('{}{}'.format(file_indent, f))

list_files('/root/OcApi')

输出结果

[root@python_test xx]# /usr/local/python-3.6.2/bin/python3 xxxx
|-- OCenter
|   |-- OCenter.php
|   |-- Lib
|   |   |-- Think.php
|   |   |-- Mysql.php
|   |-- Model
|   |   |-- User.php
|   |   |-- Base.php

os.walk() 方法为我们遍历目录树,每次进入一个目录,它会返回一个三元组,包含相对于查找目录的相对路径,一个该目录下的目录名列表,以及那个目录下面的文件名列表。