python 遍历文件夹_Python遍历文件夹的两种方法比较

遍历文件夹是一个很常用的功能吧。这里分别用两种方法实现:

第一种:使用os.walk:

# -*- coding: utf-8 -*-

importos

defTest1(rootDir):

list_dirs = os.walk(rootDir)

forroot, dirs, filesinlist_dirs:

fordindirs:

printos.path.join(root, d)

forfinfiles:

printos.path.join(root, f)

第二种:使用os.listdir:

# -*- coding: utf-8 -*-

import os

def Test2(rootDir):

for lists in os.listdir(rootDir):

path=os.path.join(rootDir, lists)

print path

if os.path.isdir(path):

Test2(path)

这两种到底有什么区别呢?

这里先建立一个测试目录E:\test,目录结构如下:

E:\TEST

│--A

│ │--A-A

│ │ │--A-A-A.txt

│ │--A-B.txt

│ │--A-C

│ │ │--A-B-A.txt

│ │--A-D.txt

│--B.txt

│--C

│ │--C-A.txt

│ │--C-B.txt

│--D.txt

│--E

下面通过运行如下代码:

Test1('E:\TEST')

print'======================================='

Test2('E:\TEST')

输出结果为:

>>>

E:\TEST\A

E:\TEST\C

E:\TEST\E

E:\TEST\B.txt

E:\TEST\D.txt

E:\TEST\A\A-A

E:\TEST\A\A-C

E:\TEST\A\A-B.txt

E:\TEST\A\A-D.txt

E:\TEST\A\A-A\A-A-A.txt

E:\TEST\A\A-C\A-B-A.txt

E:\TEST\C\C-A.txt

E:\TEST\C\C-B.txt

=======================================

E:\TEST\A

E:\TEST\A\A-A

E:\TEST\A\A-A\A-A-A.txt

E:\TEST\A\A-B.txt

E:\TEST\A\A-C

E:\TEST\A\A-C\A-B-A.txt

E:\TEST\A\A-D.txt

E:\TEST\B.txt

E:\TEST\C

E:\TEST\C\C-A.txt

E:\TEST\C\C-B.txt

E:\TEST\D.txt

E:\TEST\E

>>>

可以看出,对于第一种方法,输出总是先文件夹后文件名的,对于第二种,则是按照目录树结构以及按照首字母排序进行输出的。

另外之前打印出的目录树其实就是通过对第二种方法进行稍微修改实现的,如下:

defTest3(rootDir, level=1):

iflevel==1:printrootDir

forlistsinos.listdir(rootDir):

path = os.path.join(rootDir, lists)

print'│ '*(level-1)+'│--'+lists

ifos.path.isdir(path):

Test3(path, level+1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值