python os模块walk使用

如何递归地遍历文件夹下的所有文件。如根目录路径为'./Data/',路径下的文件结构如下:

Data/
    1/
        1.txt
        2.txt
        3.txt
        4.txt
    2/
         1.txt
        2.txt
        3.txt
        4.txt
    3/
         1.txt
        2.txt
        3.txt
        4.txt

如何得到所有的.txt的路径,进而实现对所有.txt文件的读取呢

有一个简单的方法就是使用os.walk进行读取。先看下面简单代码

import os
a = list(os.walk('./Data/'))
print(a)

上述代码结果为

[('./Data/', ['1', '2', '3'], []), 
('./Data/1', [], ['1.txt', '2.txt', '3.txt', '4.txt']), 
('./Data/2', [], ['1.txt', '2.txt', '3.txt', '4.txt']), 
('./Data/3', [], ['1.txt', '2.txt', '3.txt', '4.txt'])]

os.walk(root_dir)得到的是一个生成器,我list了一下。从结果可以看出,walk的作用是递归地对根目录文件夹进行解析。每一次会解析出一个元组(当前层的root,  当前层下的文件夹list(如果当前层下没有文件夹,就为空list), 当前层root下的文件(如果没有文件就为空list))

那么如何从上面得到的list解析出每个file的全相对路径呢

可以使用下面的代码

file_path_list = []
for root, sub_folder_path, file_name_list in os.walk('./Data/'):
    if root > './Data/':
        file_path_list += [root + '/' + file_name for file_name in file_name_list]
print(file_path_list)

结果如下

['./Data/1/1.txt', './Data/1/2.txt', './Data/1/3.txt', './Data/1/4.txt', 
'./Data/2/1.txt', './Data/2/2.txt', './Data/2/3.txt', './Data/2/4.txt', 
'./Data/3/1.txt', './Data/3/2.txt', './Data/3/3.txt', './Data/3/4.txt']



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值