Python在调用os模块时我们经常使用os.path.exists(‘filename’)判断当前目录下是否存在该文件,如:
1.问题描述
#导入相关函数库
import os
#判断当前目录下是否存在prem.txt文件
reslut = os.path.exists('prem.txt')
print(reslut)
运行结果返回True或False,但是我们无法向os.path.exists("")中传递通配符匹配下一级子目录,如(我将prem.txt文件移动到下一级文件中返回结果仍为False):
#导入相关函数库
import os
#判断当前目录下是否存在prem.txt文件
reslut = os.path.exists('./*/prem.txt')
print(reslut)
2.解决方案
实例:我将prem.txt文件移动到刚创建的两个子目录文件中(data1和data2文件夹下都存在prem.txt文件),如图所示:
引入glob模块,并利用glob.glob()获取子目录下文件路径信息,判断子文件是否存在,代码中的path_elli是通过glob.glob()获取prem.txt的路径信息(包含两个路径[’./data1/prem.txt’, ‘./data2/prem.txt’]),代码中的pathfile是获取到的"data1"和"data2"文件夹名并保存在一个数组中,通过循环即可判断子目录下是否存在该文件。
具体代码及运行结果:
#导入相关函数库
import os
import glob
#判断当前目录下是否存在prem.txt文件
reslut = os.path.exists('./*/prem.txt')
#读取子目录文件路径信息
path_elli = sorted(glob.glob('./*/*prem.txt'))
#循环读取不同地震目录下的数据
for path in path_elli:
pathfile = path.split('/')[1]
#yk_list相当于通配符的作用
yk_list = glob.glob('./'+pathfile+'/prem.txt')
for yk in yk_list:
#判断是否存在该文件,如果存在,则删除
print(os.path.exists(yk))
添加os.system('rm '+yk)后即可删除子文件夹下的prem.txt文件。