遍历目录

Python中遍历目录时当然是要用os.walk啦。

一、参数

os. walk ( top, topdown=True, οnerrοr=None, followlinks=False ) top          第一个参数为要遍历的目录的根目录 topdown  遍历的顺序:True 则为top→down,如果为False则为down→top                如果要在遍历途中删除文件夹,最好在True的时候删除,这样该目录下的文档就不需要遍历了。 onerror   这个可以自己制定一个函数名,在出错的时候可以调用 fllowlinks 默认情况下是不会遍历快捷方式的,如果系统支持需要特殊指定

二、返回值

1)正确理解

这个函数会返回一个三元组(dirpath, dirnames, filenames).

其实os.walk是递归进行的,也就是说会从topdir开始对所有的子目录都会进行一次递归调用。

即如果topdir下面的子孙中,如果有100个目录那么这个函数会返回100+1(topdir本身)次

每次返回的都是dirpath,当前的根目录

dirnames 当前根目录下的子目录列表

filenames 当前根目录下的文件

2)以前的错误理解

如果用如下形式进行调用 :root,dirpath,filename = os.walk(topdir)

取得值中

root是以topdir作为根目录取得的一次遍历。

dirpath 是以topdir下的第一个子目录为根目录进行的遍历

filename是以topdir子孙中第二个目录作为根目录进行的遍历

也就是说最多只能遍历三个文件夹的目录,再多的话就会报如下错误

ValueError: too many values to unpack

三、代码示例

这里进行一个操作,将所有的文件名字后面添加一个_new.txt
顺便一提,这里删除文件或者删除文件树,可以用shutil(shell utility缩写)来完成。
#-*- coding:utf-8-*-   
import os

for root,dirs,files in os.walk(r'F:\python\test'):
    #os.walk会以所有子孙目录为根节点进行一次递归
    #每次返回的值中第一个为根节点,第二个为根节点下的目录列表
    #第三个为当前根节点下的文件列表

    #输出当前目录下所有目录
    for d in dirs:
        print(os.path.join(root,d))
        
    #输出带路径的所有文件:
    for f in files:
        p = os.path.join(root,f)
        os.rename(p, p[0:-4]+"_new.txt")

    print("\n")


《完》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值