Python中os.walk用法使用小结

 更新时间:2025年12月15日 09:59:30   作者:RedmiUltra  
os.walk()是Python中用于遍历目录树的强大函数,本文就来详细的介绍一下os.walk用法小结,感兴趣的可以了解一下

os.walk() 是 Python 中用于遍历目录树的强大函数。让我详细解释每个变量返回的信息和用法:

基本概念

  • root: 当前正在访问的目录路径
  • dirs: 当前目录下的子目录列表
  • files: 当前目录下的文件列表

示例目录结构

project/
├── log_2024_01.txt
├── config.ini
├── logs/
│   ├── system.log
│   ├── app.log
│   └── archive/
│       └── old_log.txt
└── data/
    ├── input.csv
    └── output.csv

具体例子

import os

# 假设当前目录结构如上所示
log_dir_path = "./project"

for root, dirs, files in os.walk(log_dir_path):
    print(f"当前目录: {root}")
    print(f"子目录列表: {dirs}")
    print(f"文件列表: {files}")
    print("-" * 50)

第一次迭代

当前目录: ./project
子目录列表: ['logs', 'data']  # 当前目录下的子文件夹
文件列表: ['log_2024_01.txt', 'config.ini']  # 当前目录下的文件

第二次迭代

当前目录: ./project/logs
子目录列表: ['archive']  # logs文件夹下的子目录
文件列表: ['system.log', 'app.log']  # logs文件夹下的文件

第三次迭代

当前目录: ./project/logs/archive
子目录列表: []  # 没有子目录
文件列表: ['old_log.txt']  # archive文件夹下的文件

第四次迭代

当前目录: ./project/data
子目录列表: []  # 没有子目录
文件列表: ['input.csv', 'output.csv']  # data文件夹下的文件

实际应用示例

1. 查找特定文件

import os

for root, dirs, files in os.walk("."):
    for file in files:
        if file.endswith(".log"):
            full_path = os.path.join(root, file)
            print(f"找到日志文件: {full_path}")

2. 计算目录大小

import os

total_size = 0
for root, dirs, files in os.walk("."):
    for file in files:
        file_path = os.path.join(root, file)
        total_size += os.path.getsize(file_path)

print(f"总大小: {total_size} 字节")

3. 遍历时排除特定目录

import os

exclude_dirs = ['.git', '__pycache__', 'node_modules']

for root, dirs, files in os.walk("."):
    # 从 dirs 列表中移除要排除的目录
    dirs[:] = [d for d in dirs if d not in exclude_dirs]
    
    for file in files:
        print(os.path.join(root, file))

4. 获取所有文件的完整路径

import os

all_files = []
for root, dirs, files in os.walk("/path/to/directory"):
    for file in files:
        full_path = os.path.join(root, file)
        all_files.append(full_path)

print(f"找到 {len(all_files)} 个文件")

重要特性

默认是深度优先遍历(从上到下)

可以控制遍历方向

# 自顶向下遍历(默认)
for root, dirs, files in os.walk(".", topdown=True):
    pass

# 自底向上遍历
for root, dirs, files in os.walk(".", topdown=False):
    pass

修改 dirs 会影响遍历

for root, dirs, files in os.walk("."):
    # 不遍历隐藏目录
    dirs[:] = [d for d in dirs if not d.startswith('.')]

实际使用技巧

import os

class LogProcessor:
    def __init__(self, log_dir_path):
        self.log_dir_path = log_dir_path
    
    def process_logs(self):
        for root, dirs, files in os.walk(self.log_dir_path):
            # 按日期处理日志
            for file in files:
                if file.endswith('.log'):
                    self._process_single_log(root, file)
    
    def _process_single_log(self, directory, filename):
        filepath = os.path.join(directory, filename)
        # 处理日志文件的逻辑
        print(f"处理: {filepath}")

# 使用示例
processor = LogProcessor("./logs")
processor.process_logs()

os.walk() 是一个非常实用的函数,特别适合需要递归处理文件系统的场景,比如日志分析、文件备份、批量重命名等任务。

到此这篇关于Python中os.walk用法使用小结的文章就介绍到这了,更多相关Python os.walk用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中reduce()函数的语法参数与作用详解

    Python中reduce()函数的语法参数与作用详解

    这篇文章主要介绍了Python中reduce()函数的语法参数与作用详解,reduce函数是通过函数对迭代器对象中的元素进行遍历操作,Python3.x中reduce函数已经从内置函数中取消了,转而放在functools模块中,需要的朋友可以参考下
    2023-08-08
  • Python数学建模库StatsModels统计回归简介初识

    Python数学建模库StatsModels统计回归简介初识

    这篇文章主要为大家介绍了Python数学建模库StatsModels统计回归的基本概念,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝打击多多进步
    2021-10-10
  • Python在for循环中更改list值的方法【推荐】

    Python在for循环中更改list值的方法【推荐】

    这篇文章主要介绍了Python在for循环中更改list值的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Python入门之字符串操作详解

    Python入门之字符串操作详解

    字符串是Pyhon常用的数据类型,这篇文章主要为大家详细介绍一下python字符串的一些常见实用操作,需要的朋友可以参考下
    2022-09-09
  • 剖析Django中模版标签的解析与参数传递

    剖析Django中模版标签的解析与参数传递

    这篇文章主要介绍了剖析Django中模版标签的解析与参数传递,Django是重多高人气Python框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • Python‘==‘ 及 ‘is‘相关原理解析

    Python‘==‘ 及 ‘is‘相关原理解析

    这篇文章主要介绍了Python‘==‘ 及 ‘is‘相关原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 打包PyQt5应用时的注意事项

    打包PyQt5应用时的注意事项

    这篇文章主要介绍了打包PyQt5应用时的注意事项的相关资料,需要的朋友可以参考下
    2020-02-02
  • 详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用

    详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用

    这篇文章主要介绍了详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • pycharm查看变量值的4种方法汇总

    pycharm查看变量值的4种方法汇总

    因为Python是脚本语言,不会进行编译,所以只有执行到那一行,才能知道那个变量的类型,下面这篇文章主要给大家介绍了关于pycharm查看变量值的4种方法,需要的朋友可以参考下
    2022-04-04
  • Python中Pandas库的数据处理与分析

    Python中Pandas库的数据处理与分析

    Python的Pandas库是数据科学领域中非常重要的一个库,它使数据清洗和分析工作变得更快更简单,Pandas结合了NumPy的高性能数组计算功能以及电子表格和关系型数据库(如SQL)的灵活数据处理能力,需要的朋友可以参考下
    2023-07-07

最新评论