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