os.walk()的详细理解(秒懂) | 您所在的位置:网站首页 › walk的什么形式 › os.walk()的详细理解(秒懂) |
Python中os.walk()的详细理解
1. os.walk()参数的含义2. 代码检验2.1 先看第一次遍历:2.2 再看第二次遍历:2.3 再看第三次遍历:2.4 最后看第四次遍历:
3. 总结
反正最近文件夹名字操作要了我的老命,所以总结下这个方法的使用。 1. os.walk()参数的含义 root:Prints out directories only from what you specified.dirs:Prints out sub-directories from root.files:Prints out all files from root and directories.只看英文理解的模模糊糊(文末有中文),用代码试试看咋回事咯! 2. 代码检验先给出我的文件夹目录树形图 。 文件夹具体内容如下: 先上代码 import os # 操作的文件夹路径 operate_path = r"/media/hewenyong/my_file/soft/jupyter_workspace/mm" for root, dirs, files in os.walk(operate_path): print('root:',root) print('dirs:',dirs) print('files:',files) print('\n') """ *********************** 实验结果: ******************************* root: /media/hewenyong/my_file/soft/jupyter_workspace/mm dirs: ['sss', 'hhh'] files: ['plaid_img_00006051.jpg', 'plaid_img_00006053.jpg', 'plaid_img_00006052.jpg'] root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/sss dirs: ['hewenyong'] files: ['cat.1.jpg', 'cat.0.jpg', 'cat.2.jpg'] root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/sss/hewenyong dirs: [] files: ['cat.93.jpg', 'cat.94.jpg', 'cat.92.jpg'] root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/hhh dirs: [] files: ['abstract_img_00028077.jpg', 'abstract_img_00028073.jpg', 'abstract_img_00028076.jpg', 'abstract_img_00028075.jpg', 'abstract_img_00028074.jpg'] """可以看到输出了三次root、dirs、files 这是因为1个根目录(mm)、加上2个子目录(hhh,sss)、一个孙子目录(hewenyong)一共4个目录,所以会遍历4次。 2.1 先看第一次遍历: root: /media/hewenyong/my_file/soft/jupyter_workspace/mm dirs: ['sss', 'hhh'] files: ['plaid_img_00006051.jpg', 'plaid_img_00006053.jpg', 'plaid_img_00006052.jpg'] root:输出了mm文件夹的的绝对路径;dirs:保存了mm文件夹下的所有子文件夹的目录名(只有一层)files:则是一个保存了mm文件夹下的所有文件的文件名,并保存到list中没什么问题! 2.2 再看第二次遍历: root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/sss dirs: ['hewenyong'] files: ['cat.1.jpg', 'cat.0.jpg', 'cat.2.jpg'] root:输出了sss文件夹的的绝对路径;(这是mm文件夹的第一个子文件夹)dirs:保存了sss文件夹下的所有子文件夹的目录名(只有一层)files:则是一个保存了sss文件夹下的所有文件的文件名,并保存到list中没有问题! 2.3 再看第三次遍历: root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/sss/hewenyong dirs: [] files: ['cat.93.jpg', 'cat.94.jpg', 'cat.92.jpg']注意注意:他现在遍历的是sss的子文件夹hewneyong了,而并没有去遍历hhh! 注意注意:他现在遍历的是sss的子文件夹hewneyong了,而并没有去遍历hhh! 注意注意:他现在遍历的是sss的子文件夹hewneyong了,而并没有去遍历hhh! root:输出了hewneyong文件夹的的绝对路径;(这是sss文件夹的第一个子文件夹)dirs:为空的list(因为hhh文件夹下没有子目录了)files:则是一个保存了hewneyong文件夹下的所有文件的文件名,并保存到list中 2.4 最后看第四次遍历: root: /media/hewenyong/my_file/soft/jupyter_workspace/mm/hhh dirs: [] files: ['abstract_img_00028077.jpg', 'abstract_img_00028073.jpg', 'abstract_img_00028076.jpg', 'abstract_img_00028075.jpg', 'abstract_img_00028074.jpg'] root:输出了hhh文件夹的的绝对路径;(这是mm文件夹的另一个子文件夹)dirs:为空的list(因为hhh文件夹下没有子目录了)files:则是一个保存了hhh文件夹下的所有文件的文件名,并保存到list中 3. 总结首先,os.walk会遍历我们指定的文件夹,这没什么问题! 每一层遍历: root保存的就是当前遍历的文件夹的绝对路径;dirs保存当前文件夹下的所有子文件夹的名称(仅一层,孙子文件夹不包括)files保存当前文件夹下的所有文件的名称其次,发现它的遍历文件方式,在图的遍历方式中,那可不就是深度遍历嘛!!! 吼吼,果然自己动手还是会有新发现!!! 冲冲冲! |
CopyRight 2018-2019 实验室设备网 版权所有 |