我想编写一个代码,该代码在给定主文件夹的子文件夹中查找文件,该主文件夹具有特定扩展名,并且在其子文件夹名称中包含一些单词。我怎样才能做到这一点?
例如,获取其文件夹名称中带有单词“ dis”的文件,并获取扩展名为shp
的文件。
这是我尝试过的:
仅覆盖名称相同的部分。
rootfolder= directory
shapelist = []
for path, subdirs, files in os.walk(rootfolder):
for name in files:
if name.endswith('.shp'):
shapelist.append(os.path.join(path, name))
树就像:
rootfolder\
subfolders(including two that have the words diss)\
files inside these
希望很清楚。
答案 0 :(得分:1)
使用您的方法和os.path.split
shapelist = []
for path, subdirs, files in os.walk(rootfolder):
# check if 'dis' is in the name of the subfolder
if 'dis' in os.path.split(path)[-1]:
for name in files:
if name.endswith('.shp'):
shapelist.append(os.path.join(path, name))
但这是使用glob
的更好方法from glob import glob
shapelist = glob(rootfolder + '/**/*dis*/*.shp', recursive=True)