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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
从零开始学习Python与BeautifulSoup网页数据抓取
想要从零开始学习Python和BeautifulSoup网页数据抓取?本指南将为你提供简单易懂的指导,让你掌握这两个强大的工具,不管你是初学者还是有经验的开发者,本指南都能帮助你快速入门并提升技能,不要错过这个机会,开始你的编程之旅吧!2024-01-01浅谈python socket函数中,send与sendall的区别与使用方法
下面小编就为大家带来一篇浅谈python socket函数中,send与sendall的区别与使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-05-05Python+Tensorflow+CNN实现车牌识别的示例代码
这篇文章主要介绍了Python+Tensorflow+CNN实现车牌识别的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-10-10
最新评论