首页 > 编程语言 >Python(os.walk())

Python(os.walk())

时间:2024-11-02 20:09:00浏览次数:3  
标签:遍历 Python walk filenames txt os 目录

目录

os.walk() 是 Python 中 os 模块提供的一个用于递归遍历目录树的函数。它生成一个三元组 (dirpath, dirnames, filenames),分别包含当前目录路径、子目录列表和文件列表。os.walk() 非常适合用于文件系统操作,比如查找特定类型的文件、复制或删除文件等。



1. 函数定义

os.walk(top, topdown=True, one rror=None, followlinks=False)

参数

  • top:必需参数,表示要遍历的目录的路径。
  • topdown:可选参数,布尔值。如果为 True(默认),则先遍历顶层目录,再遍历子目录。如果为 False,则先遍历子目录,再遍历顶层目录。
  • onerror:可选参数,如果指定,遇到错误时会调用该函数(通常是权限错误)。
  • followlinks:可选参数,布尔值。如果为 True,会跟随目录中的符号链接(软链接)。

返回值

os.walk() 返回一个生成器对象,每次迭代会生成一个 (dirpath, dirnames, filenames) 元组,其中:

  • dirpath:当前遍历到的目录路径(字符串)。
  • dirnames:当前目录下的子目录名称列表。
  • filenames:当前目录下的文件名称列表。


2. 示例代码

假设有以下目录结构:

/example_directory
├── file1.txt
├── file2.txt
└── sub_directory
    ├── file3.txt
    └── file4.txt

使用 os.walk() 遍历目录:

import os

for dirpath, dirnames, filenames in os.walk('/example_directory'):
    print(f"当前目录路径:{dirpath}")
    print(f"子目录:{dirnames}")
    print(f"文件:{filenames}")
    print("-" * 20)

输出:

当前目录路径:/example_directory
子目录:['sub_directory']
文件:['file1.txt', 'file2.txt']
--------------------
当前目录路径:/example_directory/sub_directory
子目录:[]
文件:['file3.txt', 'file4.txt']
--------------------


3. 使用场景

  1. 查找特定类型的文件:
    可以使用 os.walk() 遍历目录树并筛选出特定后缀的文件。

    target_extension = ".txt"
    for dirpath, dirnames, filenames in os.walk('/example_directory'):
        for filename in filenames:
            if filename.endswith(target_extension):
                print(os.path.join(dirpath, filename))
    
  2. 统计目录中文件的数量:
    使用 os.walk() 统计目录中包含的文件数量。

    file_count = 0
    for _, _, filenames in os.walk('/example_directory'):
        file_count += len(filenames)
    print(f"文件总数:{file_count}")
    
  3. 复制或移动文件:
    结合 shutil 模块,可以使用 os.walk() 遍历目录并复制或移动文件。



4. 注意事项

  • 递归深度控制:os.walk() 无法直接限制递归深度。如果需要控制深度,可以手动检查 dirpath 的深度或在遍历过程中修改 dirnames
  • 软链接循环:如果目录中存在指向父目录的符号链接,设置 followlinks=True 可能导致无限循环。在这种情况下,推荐设置为 False


5. 总结

os.walk() 是一个强大的工具,适用于遍历目录结构。通过它,您可以轻松实现各种文件系统相关的操作。



标签:遍历,Python,walk,filenames,txt,os,目录
From: https://www.cnblogs.com/keye/p/18522397

相关文章

  • Python数据分析NumPy和pandas(十八、从Web APIs 和 数据库中获取数据)
    一、与WebAPIs进行数据交互很多Web网站都提供公共的API,并通过JSON或其他格式提供数据。那Python也有很多种方法可以访问网站提供的API,其中一种常用的方法是通过使用requests库,使用之前需要先安装它,这里通过pip安装:pipinstall requests下面我通过GitHub网站提供的API......
  • PythonWeb项目开发(Django)数据增删改查的常用方法汇总以及Q,F对象的使用(模型与mysql数
    知识点增:模型类的管理器方法:create(),模型对象的方法save()查:模型类的管理器方法:all(),filter(),exclude(),get()    扩展常见的运算符(用于用户查询,删除,更新的条件):gt,gte,it,ite,in,range,exact,contains,icontains,startswith,isstartswith,endswith,iendswith......
  • Python numpy 入门系列 21 文件
    Pythonnumpy入门系列21文件 1NumPy数组的二进制存取NumPy提供了专门的函数save()和load(),用来保存和读取NumPy数组的二进制文件。这种方式高效且适合大规模数据的存储。1.1保存数组为二进制文件save()函数将NumPy数组保存为.npy格式的文件。该格式存储的是......
  • virtualenv管理Python环境
    管理Python环境修改pip镜像mkdir-p~/.config/pipnano~/.config/pip/pip.conf[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simplevirtualenvpipinstallvirtualenv#准备目录并进入mkdir-p/home/max/.envs#创建虚拟环境(按默认的Python版本)virtual......
  • 封装技术 | CoWoS 封装工艺
    注:几篇关于CoWoS封装的合辑,有内容重叠,未整理。一文读懂先进封装CoWoS原创大K向前冲科技词话2024年06月05日08:31广东CoWoS,全称ChiponWaferonSubstrate,翻译过来就是“芯片在晶圆上,在基板上”。这个定义听起来有些拗口,但简单来说,它是一种先进的封装......
  • dockerfile 和 docker compose
    目录1.dockerfile和dockercompose区别 主要区别目的:格式:使用场景:2.Dockerfile2.1基本格式 2.2模块解析 2.3例子 3.dockercompose 3.1安装 3.2格式 3.3执行1.dockerfile和dockercompose区别 Dockerfile和DockerCompose是Docker生态系统中两个......
  • 后台管理系统的通用权限解决方案(十二)数据模型、基于SpringCloud和Nacos的后端项目搭
    后台管理系统的通用权限解决方案(一)如何自定义一个starter?后台管理系统的通用权限解决方案(二)SpringBoot整合SwaggerSpringfox实现接口日志文档后台管理系统的通用权限解决方案(三)SpringBoot整合Knife4j生成接口文档后台管理系统的通用权限解决方案(四)SpringBoot整......
  • [os/linux]:计算机中的编码和解码(ASCII)
    [os/linux]:计算机中的编码和解码(ASCII)    一、ASCII(AmericanStandardCodeForInformationInterchange)简介 1、在二进制的计算机中,ASCII用‘8位二进制数值’表示一个‘字符’;这样就形成了“字符”和“数值”之间的对应关系。ASCII表中的“字符”和“数值”,是......
  • OSPF汇总+OSPF认证
    ospf汇总汇总:使用CIDR技术,将可以合并的路由条目汇总起来,减少LSDB中的LSA数量。1、区域间的汇总(只能在ABR进行汇总)命令:在区域下:abr-summary192.168.0.0255.255.252.01.1在ABR上,可以针对区域内的1类2类LSA计算出的最优路由进行汇总,汇总后以3类LSA泛洪到其他直连......
  • python+flask计算机毕业设计高校图书馆借阅系统后台(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于高校图书馆借阅系统后台的研究,现有研究主要集中在图书馆借阅系统的整体架构与前端功能开发方面12。专门针对高校图书馆借阅系统后......