如何自定义 Python os.walk() 函数的输出以创建嵌套目录列表?

Susan Sarandon
发布: 2024-11-08 15:57:02
原创
837 人浏览过

How Can I Customize the Output of Python's os.walk() Function to Create a Nested Directory Listing?

在 Python 中使用 os.walk() 递归遍历目录:详细指南

简介

Python 的 os.walk() 函数提供了强大的机制递归遍历目录树。它会迭代指定目录中的所有目录和文件,使其成为文件管理和目录探索等任务的重要工具。

问题:自定义目录列表输出

为了演示 os.walk() 的功能,请考虑以下场景:您想要从根目录递归导航并打印目录和文件的自定义列表,包括嵌套

初始代码和 O/P

使用以下代码:

import os
import fnmatch

for root, dir, files in os.walk("."):
    print(root)
    print("")
    for items in fnmatch.filter(files, "*"):
        print("..." + items)
    print("")
登录后复制

您将获得以下输出:

.

...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py

./packagedemo

...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
登录后复制

但是这个输出不符合想要的格式of:

A
---a.txt
---b.txt
---B
------c.out
登录后复制
登录后复制

解决方案

要自定义输出,需要一种改进的方法。以下代码实现了所需的格式:

import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)
登录后复制

说明

此代码使用以下逻辑:

  1. 它拆分根使用操作系统的目录分隔符(例如,“/”)将路径转换为列表路径UNIX)。
  2. 它使用适当数量的前导连字符打印当前目录的基本名称,代表其嵌套级别。
  3. 它迭代当前目录中的文件并打印每个文件它的嵌套

输出

使用此改进的代码,您将获得所需的输出:

A
---a.txt
---b.txt
---B
------c.out
登录后复制
登录后复制

在此输出中,A B 代表目录,a.txt、b.txt、c.out 代表文件。连字符前缀的数量表示每个项目的嵌套级别。

以上是如何自定义 Python os.walk() 函数的输出以创建嵌套目录列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!