## os.walk()函数炒鸡详细解析:

os.walk()函数炒鸡详细解析:

**一个编程小白的自我成长之路:**
之前在博客园中查找os.walk函数,不是很理解,半懂不懂的。然后,自己跑了一段代码,运行了一下。其中print((dirpath,dirnames)是我自己加的,为了了解其中运行的原理。(我经常是用print打印出来,看到结果反推其中代码过程*_*嘿嘿,debug断点,我用过几个月还是很有明白其中逻辑,所以这应该是我还是个小白的根本原因,后面还是要查一查debug原理怎么用等)。然后打印出下面的结果:

D:\anaconda\python.exe “D:/虹膜识别源代码/python code/Iris-Recognition-master/datasets.py”
(‘UTIRIS V.1\Infrared Images’, [‘001’, ‘002’, ‘003’, ‘004’, …, ‘078’, ‘079’])
(‘UTIRIS V.1\Infrared Images\001’, [‘001_L’, ‘001_R’])
(‘UTIRIS V.1\Infrared Images\001\001_L’, [])
(‘UTIRIS V.1\Infrared Images\001\001_R’, [])
(‘UTIRIS V.1\Infrared Images\002’, [‘002_L’, ‘002_R’])

其中,UTIRIS V.1\\Infrared Images这个是根目录,根目录下面的孩子是['001', '002', '003', '004', ......', '078', '079'])
然后遍历根目录下的孩子001,也就是'UTIRIS V.1\\Infrared Images\\001这个是子目录,子目录下的孩子是['001_L', '001_R'];然后,子目录下的子目录'UTIRIS V.1\\Infrared Images\\001\\001_L',这个目录下的孩子[]。在然后遍历,根目录的孩子002,也就是UTIRIS V.1\\Infrared Images\\002这个子目录,子目录下的孩子是['002_L', '002_R']。。。后面以此类推下去,也就是os.walk先根据根路径,遍历根下的孩子,在从左遍历第一个子目录,遍历第一个子目录下的孩子,。。。其次类推下去....

![运行程序的目录图](https://img-blog.csdnimg.cn/20200721101058829.jpg)

最后,我展示一个遍历图。
![自己画的遍历图](https://img-blog.csdnimg.cn/20200721105257765.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODMwNjYyNQ==,size_16,color_FFFFFF,t_70)

试验运行的代码如下:

def load_utiris():
 
    data = []
    target = []
    target_i = 0
    index_used = False
    for dirpath, dirnames, filenames in os.walk('UTIRIS V.1\\Infrared Images'):   #根dirpath   根的孩子dirnames,孩子的名filenames
        **print((dirpath,dirnames))**
        for f in filenames:
            if f.endswith('.bmp'):
                data.append('{}\{}'.format(dirpath, f))      #将路径和文件名以元组的形式添加到data列表中
                target.append(target_i)                      #记录文件个数
                index_used = True
        if index_used:
            target_i += 1
            index_used = False
    return {'data': np.array(data),
            'target': np.array(target)}         # 返回一个字典  键是data 键值为np.array

神马?!这个解四戒么详细,还是看不懂。那博主,告诉你个更简单的办法,再看一遍。O,my噶,还是看不懂,那就留言吧,我跟你杠杠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值