os.walk和os.listdir遍历目录比较

python 专栏收录该内容
6 篇文章 0 订阅

假设存在下面的目录和文件结构:

/a ----> /b ----> 1.py,2.py

    ----> /c  ----> 3.py , 4.py

    ----> 5.py

    ----> 6.py

os.walk()

运行下面的测试代码

import os
for root, dirs, files in os.walk('../a'):  # 指向当前的测试文件夹
    print(root)
    print(dirs)
    print(files)

输出结果,我们解析一下输出结果

../a                  # 当前遍历的根目录 
['b', 'c']            # 根目录下的两个子目录b,c
['5.py', '6.py']      # 根目录下的两个子文件
../a\b                # 遍历根目录下的子目录b
[]                    # 子目录b中的子目录
['1.py', '2.py']      # 子目录b中的文件
../a\c                # 遍历根目录下的子目录c
[]                    # 子目录c中的子目录
['3.py', '4.py']      # 子目录c中的文件

os.listdir()

运行如下测试代码

for f in os.listdir('../a'):
    print(f)

输出结果

5.py
6.py
b
c

两种方法比较

os.walk将当前目录下的所有子目录及其中的内容,都会遍历到;而os.listdir只会遍历当前目录中所包含的内容。当存在如下的目录级别时

/a  ---->   /b ------> b1.txt  b2.txt

     ---->   /c  ------> c1.txt  c2.txt

     ---->   /d  ------> d1.txt d2.txt

当我们想要将所有的txt文件提取出来,此时使用os.walk是最好的选择,直接将files遍历即可,因为files在其父目录成为根目录时,会将当前文件夹中的所有files遍历出来,即:

import os 
for root, dirs, files in os.walk('./a'):
    for file in files:
        print(file)
#运行结果
b1.txt
b2.txt
c1.txt
c2.txt


  • 2
    点赞
  • 0
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值