# 1.递归法
def find_fname(strs):
target=list() #输出最后路径+文件名
def find(strs,path,target=target):
os.chdir(path) #切换当前目录到path路径
for each in os.listdir(os.curdir): #os.curdir为当前目录"."
if os.path.isfile(each): #如果each 为文件
if strs in each: #如果字符串strs在each文件名中
pstrs=os.path.join(os.path.abspath(os.curdir),each) #获取当前目录绝对路径,并与each文件名合并成最终路径
target.append(pstrs) #将得到的路径,加入到最终列表中
elif os.path.isdir(each): #如果each为目录
find(strs,each) #递归调用find函数,进入each目录。递归法实际运用中,无需给出each绝对路径,只给出相对路径each自身即可
os.chdir(os.pardir) #每次递归完成后,均返回上一层目录
return target
file_list=find(strs,os.curdir) #调用内嵌函数,查询当前目录下目标文件及路径。也可以指定路径
return file_list
print(find_fname("tt")) #调用函数,查找当前路径下,文件名中包含tt字符串的文件
Sign in to make a reply
感悟旅途
# 1.递归法
def find_fname(strs):
target=list() #输出最后路径+文件名
def find(strs,path,target=target):
os.chdir(path) #切换当前目录到path路径
for each in os.listdir(os.curdir): #os.curdir为当前目录"."
if os.path.isfile(each): #如果each 为文件
if strs in each: #如果字符串strs在each文件名中
pstrs=os.path.join(os.path.abspath(os.curdir),each) #获取当前目录绝对路径,并与each文件名合并成最终路径
target.append(pstrs) #将得到的路径,加入到最终列表中
elif os.path.isdir(each): #如果each为目录
find(strs,each) #递归调用find函数,进入each目录。递归法实际运用中,无需给出each绝对路径,只给出相对路径each自身即可
os.chdir(os.pardir) #每次递归完成后,均返回上一层目录
return target
file_list=find(strs,os.curdir) #调用内嵌函数,查询当前目录下目标文件及路径。也可以指定路径
return file_list
print(find_fname("tt")) #调用函数,查找当前路径下,文件名中包含tt字符串的文件