Python的os.walk()方法详细讲解

http://www.cnblogs.com/herbert/archive/2013/01/07/2848892.html   写的特别清楚的一篇

http://alanland.iteye.com/blog/612459






我们可以看到,返回的是一个元组,元祖每一个元素即上面一行的内容,所以用for去遍历它。

然后对应的将这行的第一列的内容给root

                                  第二列 给dirs

                                 第三列 给files

元组每一个元素就是遍历一棵树(包括子树)         根的孩子(注意 不是子孙),如上图中蓝色框中的内容

[(根,孩子文件夹,孩子文件), 

(子根,孩子文件夹,孩子文件),

(子根,孩子文件夹,孩子文件),

(子根,孩子文件夹,孩子文件)]





应用:

1.遍历文件夹下的所有文件(为了方便,假设只有一层文件夹)

for parent, dir_names, file_names in os.walk(person_dir):
    for file_name in file_names:
        print file_name


 

 
 

就可以遍历所有的file了

解析:os.walk("/dir")返回的结果是这样的

(  /dir,               [dir1,dir2......],                  [ file1,file2,................] ),

(  /dir/dir1 ,       [] ,                                    [file10,file12......]      ) ,  

(  /dir/dir2 ,       []                                      [file20,...........]        ) ,

................................        

第一趟循环

parent 为:      /dir

dir_names为:[dir1,dir2,.....dirn],

file_names为:[file1,file2,...............] 

此时执行for file_name in file_names:

则内循环print出file1,file2.........

即打印出根目录dir下所有文件

第二趟循环

parent 为:    /dir/dir1

dir_names为: [],

file_names为:[file10,file12......

此时执行

for file_name in file_names:


 
则内循环print出file10,file12......... 

即打印出dir2下的所有文件

第三趟循环...................

2.那么如何读取所有文件夹名字呢?

for parent, dir_names, file_names in os.walk(person_dir):
    for dir_name in dir_names:
        print dir_name



第一趟循环

parent 为/dir

dir_names为 [dir1,dir2,.....dirn],

file_names为[file1,file2,............... ] 

此时执行

for dir_name in dir_names


则内循环print出dir1,dir2, dir3.........

即打印出根目录dir下所有文件夹


第二趟循环

parent 为/dir/dir1

dir_names为 [],

file_names为[file10,file12......

此时执行

for file_name in file_names:


 
则内循环 
为空 

第三趟循环内循环同样为空

剩下的内循环同样为空(见上述假设)

这样就打印出了所有文件夹

3.如果只想读取根目录下文件夹下的文件,不想读取根目录下的文件(假设根目录下的文件夹中没有文件夹,只有文件)

for parent, dir_names, file_names in os.walk(dir):
    for dir_name in dir_names:
        for parent2, dir_names2, file_names2 in os.walk(dir+dir_name):
            for file_name in file_names2:


 

请自行体会



  • 42
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Python的os模块中的os.walk()函数是用来遍历文件夹的。它可以递归地遍历指定文件夹下的所有子文件夹和文件,并返回一个包含每个文件夹路径、子文件夹列表和文件列表的三元组的生成器。 而os.path.join()函数是用来连接路径的。它可以将多个路径组合成一个新的路径,并根据操作系统的不同自动添加正确的路径分隔符。这样可以方便地创建文件的绝对路径。 举个例子,如果我们有一个文件夹路径 `c:\Python`,并且文件夹中有一个名为 `a.txt` 的文件,我们可以使用os.path.join()函数将文件夹路径和文件名连接起来,生成完整的文件路径 `'c:\\Python\\a.txt'`。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python os.walk() 方法遍历文件目录](https://blog.csdn.net/weixin_34567079/article/details/114911951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [如何用Python os.path.walk方法遍历搜索文件内容的操作详解_](https://blog.csdn.net/weixin_42216454/article/details/113963002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值