Python递归实现①返回一个目录下所有文件绝对路径的列表②在给定目录下的所有子目录里创建文件③删除给定目录下的所有子目录中的指定文件

一、返回一个目录下所有文件的绝对路径的列表(只关心文件,不要子目录,但是子目录里的文件也都要返回)

import os

def mywalk(path):
    '''
    返回给定路径下所有文件的绝对路径列表,包括子目录中的文件,但是不要子目录的路径
    
    :参数 path:绝对路径
    '''
    #创建一个空列表,用于存储文件的绝对路径
    files_list = []
    #遍历给定路径下所有的元素(这些元素可能是目录,也可能是文件)
    for element in os.listdir(path):
        #如果当前元素是一个目录
        if os.path.isdir(os.path.join(path,element)):
            #调用mywalk本身处理这个子目录
            #mywalk对子目录的处理必然也会返回一个文件路径的列表
            #把返回的列表拼接到我们的最终列表上
            files_list+=mywalk(os.path.join(path,element))
        #如果当前元素是一个文件
        else:
            #把当前元素的绝对路径放进一个列表
            #把这个列表拼接到我们最终的列表上
            files_list+=[os.path.join(path,element)]
    #返回最终的列表
    return files_list

二、 在给定目录下的所有子目录里创建指定的文件

import os

def c_litter(path,filename):
    '''
    在给定路径的所有子目录里创建一个指定名称的文件

    :参数 path:绝对路径
    :参数 filename:指定的文件名,如trash.txt
    '''
    #遍历给定的路径
    for element in os.listdir(path):
        #拼接出当前元素的绝对路径,方便后面判断和使用
        current_file = os.path.join(path,element)
        #如果当前元素是一个目录
        if os.path.isdir(current_file):
            #那么就在这个目录里创建一个trash.txt的文件
            open(os.path.join(current_file,filename),'w')
            #对当前目录调用c_litter函数,它会继续探测这个子目录的内部元素
            #根据情况决定是否创建文件
            c_litter(current_file,filename)

三、在给定目录下的所有子目录里查找并删除指定的文件

import os

def r_litter(path,filename):
    '''
    递归删除给定路径下所有指定名称的文件

    :参数 path:绝对路径
    :参数 filename:指定的要删除的文件名
    '''
    #遍历给定的路径
    for element in os.listdir(path):
        #拼接出当前元素的绝对路径
        current_file = os.path.join(path,element)
        #如果当前元素是一个目录
        if os.path.isdir(current_file):
            #对当前元素调用r_litter函数,它会继续深入处理当前目录
            r_litter(current_file,filename)
        #如果当前元素是一个文件
        else:
            #判断当前文件是不是我们要删除的目标
            if os.path.basename(current_file) == filename:
                #如果是的话,就删除
                os.remove(current_file)

 

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值