在使用CityScapes数据集的时候,它的训练集里面有18个子文件夹分别是来自18个城市的图片,相应的训练集的标签集里面也有18个子文件夹。我们就要将这些训练图片全部拿出来,所以就用到了文件的递归来得到所有的图片

import os
def recursive_glob(rootdir='.', suffix=''):"""Performs recursive glob with given suffix and rootdir:param rootdir is the root directory:param suffix is the suffix to be searched"""return [os.path.join(looproot, filename)for looproot, _, filenames in os.walk(rootdir)for filename in filenames if filename.endswith(suffix)]root='/home/zzp/SSD_ping/my-root-path/My-core-python/DATA/CityScapes'
split="train"
images_base = os.path.join(root, 'leftImg8bit', split)
files[split] = recursive_glob(rootdir=images_base, suffix='.png')

os.walk(rootdir)这个函数讲解如下:

def walk(top, topdown=True, onerror=None, followlinks=False):"""Directory tree generator.For each directory in the directory tree rooted at top (including topitself, but excluding '.' and '..'), yields a 3-tupledirpath, dirnames, filenamesdirpath is a string, the path to the directory.(是一个str类型)  dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..').(该列表里面显示的是在dirpath目录下的文件夹,如果没有文件夹那就是空列表)filenames is a list of the names of the non-directory files in dirpath(也就是说filenames里面只能是在dirpath目录下的文件,如果没有文件那么是空列表).Note that the names in the lists are just names, with no path components.To get a full path (which begins with top) to a file or directory indirpath, do os.path.join(dirpath, name).Example:import osfrom os.path import join, getsizefor root, dirs, files in os.walk('python/Lib/email'):print(root, "consumes", end="")print(sum([getsize(join(root, name)) for name in files]), end="")print("bytes in", len(files), "non-directory files")if 'CVS' in dirs:dirs.remove('CVS')  # don't visit CVS directories"""pass

那么得到的三个参数都是以dirpath为起点的,那么这个参数是怎么变化的呢,才能遍历(gloab)全部的文件?

其实很简单:首先dirpath的值是里面的参数top也就是上面的root,接下来就是一层一层的索引,直到是空列表,转到下一个目录继续索引。详情可以自己复制上面的代码,自己制作一个目录跑一下代码看结果,很容易的看出检索机制。

filename.endswith(suffix)函数讲解如下:

filename是一个str类型的,endswith是这个类型的一个内置函数,当结尾是指定的suffix(后缀)时,返回True;否则返回False。

所以上述代码的目的是:

得到a文件夹里面的所有以.png结尾的文件的完整路径,然后返回一个列表,里面的值就是每个文件的完整路径

import os
a='/home/zzp/SSD_ping/my-root-path/My-core-python/DATA/CityScapes/leftImg8bit'
b=[]
for looproot, _, filenames in os.walk(a):for filename in filenames:if filename.endswith('.png'):b.appand(os.path.join(looproot,filename)

Performs recursive(递归) glob(全局) with given suffix and rootdir,使用os.walk(rootdir)和filename.endswith(s相关推荐

  1. 递归、os.walk、内置函数、lambda、hashlib模块、md5加密、python安装第三方模块、操作mysql数据库...

    #递归就是函数自己调自己,一般递归都会有在什么情况下结束递归,一业可以有结束条件#递归最多死循环999次,递归不能设定次数# count=0# def abc():# global count# co ...

  2. SQL:With recursive 递归用法

    With Recursive as 有两种递归字段n的声明写法,第一种是在with- as 中声明需要递归的字段,第二种是在sql语句中第一段的初始值内声明变量. WITH RECURSIVE cte ...

  3. AngularJS recursive(递归)

    工作中我们经常要遍历多层数据,如果数据是已知层级的话,用 ng-repeat 就搞定了,要是数据深度是无限的呢,或者我们要实现一个无限层级的 tree 的时候,该怎么办? 答案是使用 ng-inclu ...

  4. WITH RECURSIVE递归

    1.向上递归查询到父节点(避免死循环) WITH RECURSIVE org AS ( SELECT * FROM tb_org WHERE org_id IN ('**') UNION ALL SE ...

  5. python~文件遍历命令:glob、os.walk

    ----补充:定义函数,通常出现在循环结构中. # Description:将一批txt文件的每一段文本保存成独立的文件import os import sysproject_path = os.ge ...

  6. Python 递归遍历文件夹(递归删除XXX文件夹)慎用

    # 批量删除PM1244中CellVideo2 # 请非常谨慎的使用. import shutil import os # PMRootPath = r'X:/PM210603161151244' P ...

  7. shell快速迁移海量文件

    业务需求:需要把一个目录下的1000多万个文件迁移到远程机器 思路:用wget来把文件一个一个的迁移过去,因为文件数量比较大,如果一下在循环操作,会非常慢.所以分批操作,采用化整为零的方法. #! / ...

  8. python中glob模块怎么下_如何在Python中使用glob.glob模块搜索子文件夹?

    如何在Python中使用glob.glob模块搜索子文件夹? 我想在文件夹中打开一系列子文件夹,找到一些文本文件并打印一些文本文件行. 我用这个: configfiles = glob.glob('C ...

  9. python批量删除文件1001python批量删除文件_Python实现递归遍历文件夹并删除文件...

    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...

  10. python递归遍历目录_Python实现递归遍历文件夹并删除文件

    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹 ...

最新文章

  1. Spring基础专题——第十一章(高级注解编程完结)
  2. springmvc使用和经验总结(长沙师说网络科技有限公司)
  3. FFmpeg4.1 视频解码,保存原始YUV数据
  4. jquery ajax请求 清除缓存
  5. 路由器架设虚拟服务器让外网访问到本地网站
  6. Linux free 命令详解
  7. 坑爹的 Lombok,把我害惨了!
  8. 多示例代码:go语言中循环练习题,不包括break,continue
  9. tableau 地图不显示怎么回事
  10. PPAPI+VS2013开发(1):环境配置
  11. 【Android】aapt2报错:windows W/ziparchive( 2348): Unable to open ‘badging‘: No such file or directory
  12. 图像处理中像素和毫米的换算
  13. 根据离散傅里叶变换对ECG信号进行频谱分析
  14. 怎样将收藏的网址导入到搜狗账号中
  15. 手游测试人才稀缺,兼容性问题突出
  16. 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS
  17. java 天数计算日期_Java 计算日期间天数与日期推算等操作
  18. word2vec中数学原理详解以及原理思考
  19. 温度传感器DS18B20介绍
  20. 修改3389远程端口的批处理文件.bat

热门文章

  1. wma转mp3怎么弄_mp3格式转换器如何把wma转mp3格式(教程)
  2. 一、开启root登录权限 1.更改root密码 1)打开终端,输入【sudo -s】获得临时root权限,再输入【sudo passwd root】修改root密码。
  3. Python定向爬虫入门
  4. 存储卡规格等级全解!SD卡TF卡都能用
  5. 北航超算运行matlab,工信部网:北航学子荣获ASC19世界大学生超算竞赛最高计算性能奖...
  6. 谷歌、华盛顿大学联合研究:为什么在标准数据集上刷榜有问题
  7. K8s 集群上运行ca机制
  8. C#(四十二)之线程同步、互锁
  9. 为什么提问能力很重要?
  10. uniapp H5公众号errMsg: “onMenuShareAppMessage:fail, the permission value is offline verifying“