os.walk|图片数据集
该函数的功能:遍历指定文件夹下的所有【路径】【文件夹】【文件名】
'''
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数:
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
'''
函数定义
#查看root的所有值【root代表当前遍历文件夹的路径】
for root,dirs,files in os.walk(".",topdown=True):
print(os.getcwd())
print(root) '''
说明:topdown = True 从最上层开始遍历 得到当前文件夹下的所有文件夹 返回结果: D:\python\TensorFlow\1_data_input_create\4.3 ##1.当前工作目录一直没有改变(脚本所在目录)
. ##遍历顶层文件夹【'.'代表当前工作目录【一层】】
D:\python\TensorFlow\1_data_input_create\4.3 ##1.当前工作目录一直没有改变(脚本所在目录)
.\mnist_digits_images ##遍历到子文件【二层】
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\0 ##遍历到子文件夹【三层】,【三层】有10个文件夹,一次遍历
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\1
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\2
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\3
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\4
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\5
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\6
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\7
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\8
D:\python\TensorFlow\1_data_input_create\4.3
.\mnist_digits_images\9 '''
查看所有root
for root,dirs,files in os.walk(".",topdown=True):
print(dirs)
#
'''
['mnist_digits_images'] ###指定目录下,只有一个文件夹【二层】
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] ###正在遍历的文件夹有10个文件夹【三层】
[] ### 文件夹0 中没有文件夹
[] ### 文件夹1 中没有文件夹
[]
[]
[]
[]
[]
[]
[]
[]
'''
查看所有dirs
for root,dirs,files in os.walk(".",topdown=True):
print(files) '''
['4.3_data_input_create.py', 'os模块.py', '配套知识点.py'] ###【一层】所有文件
[] ###【二层】没有文件
['0.bmp', '1.bmp', '10.bmp', '100.bmp', '101.bmp', '102.bmp', '103.bmp', '104.bmp',
###【三层】文件较多,只列举了文件夹0中的文件,文件夹1的文件类似
查看所有files
##文件名和路径组合成文件名【绝对路径】,路径分离出当前文件夹名
for (dirpath,dirsname,filesname) in os.walk('mnist_digits_images',topdown=True):
for filename in filesname:
filename_path = os.sep.join([dirpath,filename])
print(filename_path)
time.sleep(1)
dir_name = dirpath.split('\\')[-1]
print(dir_name)
time.sleep(12)
'''
第一次循环
mnist_digits_images\0\0.bmp ##文件的绝对路径
0 ##当前文件名
第二次循环
mnist_digits_images\0\1.bmp
0
'''
文件绝对路径和提取遍历位置的文件名
##将字符串类型的文件名称,映射成数字类型
##去重排序:set()--无序不重复集合类型 sorted()排序,默认升序 list()变成列表形式
lab = list(sorted(set(labelsnames)))
'''
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
'''
##映射成数字
labdict = dict(zip(lab,list(range(len(lab)))))
'''
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} 补充:
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
''' labels = [labdict[i] for i in labelsnames]
'''
列表解析:通过遍历所有字符串类型的文件夹名称【'0','0',````['9']】,通过字典取值,获得数字类型的文件名[0,0,`````,9]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ``````9]每个数字都对应一张图片
'''
将字符串类型的文件名称,映射成数字类型
a = np.array(labelsnames)
'''
将列表形式转化成数组形式
['0' '0' '0' ... '9' '9' '9']
'''
b = shuffle(np.asarray(lfilenames),np.asarray(labels))
'''
from sklearn.utils import shuffle 乱序
[array(['mnist_digits_images\\8\\292.bmp',
'mnist_digits_images\\1\\668.bmp',
'mnist_digits_images\\6\\121.bmp', ...,
'mnist_digits_images\\7\\821.bmp',
'mnist_digits_images\\6\\308.bmp',
'mnist_digits_images\\7\\286.bmp'], dtype='<U29'), array([8, 1, 6, ..., 7, 6, 7])] '''
转换成数组,并且乱序
os.walk|图片数据集的更多相关文章
- DCGAN增强图片数据集
DCGAN增强图片数据集 1.Dependencies Python 3.6+ PyTorch 0.4.0 numpy 1.14.1, matplotlib 2.2.2, scipy 1.1.0 im ...
- python os.walk()
os.walk()返回三个参数:os.walk(dirpath,dirnames,filenames) for dirpath,dirnames,filenames in os.walk(): 返回d ...
- os.walk()
os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. walk()方法语法格式如下: os.walk(top[, topdown=True[, onerror=None[ ...
- [py]os.walk爬目录&sys.argv灵活获取参数
1, 遍历目录 os.walk('/tmp') os.next() 2,sys.argv ######################################## py@lanny:~/t ...
- Python 用 os.walk 遍历目录
今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发现了os.walk方法,就忍不住和大家分享下. 先看下代码: import os for i in os.wa ...
- python os.walk()和os.path.walk()
一.os.walk() 函数声明:os.walk(top,topdown=True,onerror=None) (1)参数top表示需要遍历的顶级目录的路径. (2)参数topdown的默认值是“Tr ...
- python 简单示例说明os.walk和os.path.walk的不同
import os,os.path def func(arg,dirname,names): for filespath in names: print os.path.join(dirname,fi ...
- os.walk获取同级目录具有随机性
1.在不同机器上,相同内容的目录和文件,os.walk获取结果中路径的先后顺序具有随机性. 2.查看os.walk源码得知,listdir具有随机性. 3.修改该源码,对listdir结果排序后,使得 ...
- python os.walk()遍历
os.walk()遍历 import os p='/bin' #设定一个路径 for i in os.walk(p): #返回一个元组 print (i) # i[0]是路径 i[1]是文件夹 i[2 ...
随机推荐
- Python笔记(十)_迭代器与生成器
迭代 用for...in来遍历一个可迭代对象的过程就叫迭代 可迭代对象:列表.元组.字典.集合.字符串.生成器 可以使用内置函数isinstance()判断一个对象是否是可迭代对象 >>& ...
- USACO 6.5 章节 世界上本没有龙 屠龙的人多了也便有了
All Latin Squares 题目大意 n x n矩阵(n=2->7) 第一行1 2 3 4 5 ..N 每行每列,1-N各出现一次,求总方案数 题解 n最大为7 显然打表 写了个先数值后 ...
- QTP使用dictionary 对象
1. 创建即使用Dictionary对象 ' 创建Dictionary对象Set Dic = CreateObject("Scripting.Dictionary")' 添加Dic ...
- HDU3449_Consumer
这个是一个背包的变形题,很值得仔细体味 大致题意: 这个比普通背包多一个限制:再选每一类物品之前必须要先购买一个篮子来装,篮子有一定的价格,其他就和背包是一样的了 思路: 为了能够体现篮子的价值,我们 ...
- 【mySQL】left join、right join和join的区别
哈,好久没更新文章了,今天来说说关于mySQL那些年的小事.说到mySQL啊,用了挺久的了,但是有个问题一直在困扰着我,就是left join.join.right join和inner join等等 ...
- 51.Lowest Common Ancestor of a Binary Tree(二叉树的最小公共祖先)
Level: Medium 题目描述: Given a binary tree, find the lowest common ancestor (LCA) of two given nodes ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- 【知识强化】第四章 网络层 4.7 IP组播
这节课我们来学习一下IP组播. 首先我们来看这样一个问题,IP数据报在网络当中传输的时候,有几种传输方式呢?三种,分别是单播.广播和组播(多播).这个组播呢也叫做多播,它们俩是一个意思.那这个组播是由 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 I J
I. query 题意:给出n的一个排列,有m个询问[l,r],询问[l,r]直接有倍数关系的pair个数. 解法:比赛完之后听说是原题,但是我没做过呀,做题太少了qwq.首先因为数字是1-n的,所以 ...
- mybatis generator 使用方法
环境: ubuntu eclipse maven 一. 简介 mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件以及pojo 二. ...