Python文件遍历os.walk()与os.listdir()使用及说明

 更新时间:2022年11月16日 10:18:54   作者:KGzhang  
这篇文章主要介绍了Python文件遍历os.walk()与os.listdir()使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python文件遍历os.walk()与os.listdir()

在图片处理过程中,样本数据的组织是个常见的问题,样本组织好了,后面数据转换、读取等都能得心应手。

在这里讲一下我在准备样本时的一些心得

首先是os.walk()函数

os.walk(path)返回三个值:

  • parent
  • dirnames
  • filenames

分别表示path的路径、path路径下的文件夹的名字和path路径下文件夹以外的其他文件;

我用下面的代码来对样本图片建立标签:

不过不知walk到底是怎么遍历的,我生成的标签顺序乱了

所以这就想到用listdir来重新做标签:

os.listdir(path)返回一个包含path路径下所有文件的列表

我用下面的方法来建立标签:

不过还是之前一样的乱序,最后采用sort():

先获取文件夹下图片文件的名字列表list,再对图片的序号进行排序,将排序好的文件名列表逐一写入txt中

os.walk和os.listdir遍历目录比较

假设存在下面的目录和文件结构:

/a ----> /b ----> 1.py,2.py

    ----> /c  ----> 3.py , 4.py

    ----> 5.py

    ----> 6.py

os.walk()

运行下面的测试代码

import os
for root, dirs, files in os.walk('../a'):  # 指向当前的测试文件夹
    print(root)
    print(dirs)
    print(files)

输出结果,我们解析一下输出结果

../a                  # 当前遍历的根目录 
['b', 'c']            # 根目录下的两个子目录b,c
['5.py', '6.py']      # 根目录下的两个子文件
../a\b                # 遍历根目录下的子目录b
[]                    # 子目录b中的子目录
['1.py', '2.py']      # 子目录b中的文件
../a\c                # 遍历根目录下的子目录c
[]                    # 子目录c中的子目录
['3.py', '4.py']      # 子目录c中的文件

os.listdir()

运行如下测试代码

for f in os.listdir('../a'):
    print(f)

输出结果

5.py
6.py
b
c

两种方法比较

os.walk将当前目录下的所有子目录及其中的内容,都会遍历到;而os.listdir只会遍历当前目录中所包含的内容。当存在如下的目录级别时

/a  ---->   /b ------> b1.txt  b2.txt

     ---->   /c  ------> c1.txt  c2.txt

     ---->   /d  ------> d1.txt d2.txt

当我们想要将所有的txt文件提取出来,此时使用os.walk是最好的选择,直接将files遍历即可,因为files在其父目录成为根目录时,会将当前文件夹中的所有files遍历出来,即:

import os 
for root, dirs, files in os.walk('./a'):
    for file in files:
        print(file)

#运行结果
b1.txt
b2.txt
c1.txt
c2.txt

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Keras实现Tensor的相乘和相加代码

    使用Keras实现Tensor的相乘和相加代码

    这篇文章主要介绍了使用Keras实现Tensor的相乘和相加代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python多种接口请求方式示例详解

    Python多种接口请求方式示例详解

    这篇文章主要介绍了Python多种接口请求方式示例 ,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下
    2024-08-08
  • 利用Python实现自动化监控文件夹完成服务部署

    利用Python实现自动化监控文件夹完成服务部署

    本篇文章将为大家详细介绍如何利用Python语言实现监控文件夹,以此辅助完成服务的部署动作,文中的示例代码讲解详细,感兴趣的可以尝试一下
    2022-07-07
  • 解决Django中checkbox复选框的传值问题

    解决Django中checkbox复选框的传值问题

    这篇文章主要介绍了解决Django中checkbox复选框的传值问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python抽取指定url页面的title方法

    python抽取指定url页面的title方法

    今天小编就为大家分享一篇python抽取指定url页面的title方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python中三种输出格式总结(%,format,f-string)

    python中三种输出格式总结(%,format,f-string)

    在Python语言编程中,我们会与字符串打交道,那务必会输出字符串来查看字符串的内容,下面这篇文章主要给大家介绍了关于python中三种输出格式的相关资料,三种格式分别是%,format,f-string,需要的朋友可以参考下
    2022-03-03
  • 什么是Python中的匿名函数

    什么是Python中的匿名函数

    在本篇文章里小编给大家整理的是关于Python匿名函数知识点总结,需要的朋友们可以学习参考下。
    2020-06-06
  • PyQt5 pyqt多线程操作入门

    PyQt5 pyqt多线程操作入门

    本篇文章主要介绍了PyQt5 pyqt多线程操作入门,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Python开源库 Streamlit 应用案例

    Python开源库 Streamlit 应用案例

    Streamlit是一个开源Python框架,专为数据科学家和工程师设计,可快速构建交互式Web应用,无需前端开发知识,支持数据可视化、模型集成、文件上传及多种部署方式,简化了数据驱动项目开发流程,本文给大家介绍Python开源库Streamlit应用案例,感兴趣的朋友一起看看吧
    2025-09-09
  • 使用pandas中的DataFrame.rolling方法查看时间序列中的异常值

    使用pandas中的DataFrame.rolling方法查看时间序列中的异常值

    Pandas是Python中最受欢迎的数据分析和处理库之一,提供了许多强大且灵活的数据操作工具,在Pandas中,DataFrame.rolling方法是一个强大的工具,在本文中,我们将深入探讨DataFrame.rolling方法的各种参数和示例,以帮助您更好地理解和应用这个功能
    2023-12-12

最新评论