目前我正在开发脚本,将执行特定目录的清理。在
例如: 目录:/app/test/log 包含许多名为testYYYYMMDD和logYYYYMMDD的子目录
我需要的是,只过滤出像testYYYYMMDD这样的目录
要获取给定目录中具有绝对路径的所有文件夹,我使用:
folders_in_given_folder = [name for name in os.listdir(Directory) if os.path.isdir(os.path.join(Directory, name))]
folder_list = []
for folder in folders_in_given_folder:
folder_list.append([os.path.join(Directory, folder)])
print(folder_list)
输出:
^{pr2}$所以现在我需要过滤出符合模式的子目录, 模式可以是这样的:*test*,test*,test2015*
我试过用环球网(),但这似乎只适用于文件而不是目录。在
请你解释一下我怎样才能得到想要的结果?在
如建议,我会解释(感谢-1 btw:D)
compile("test\d{8})
将准备一个正则表达式,该正则表达式与任何名为test
的文件夹匹配,后跟一个8位数格式的日期。在然后我利用
os.walk
方法在folders
迭代器中正确地保存每个文件夹(从而避免使用方法is_dir
)我用
[dirname for dirname in dirnames if reg_compile.match(dirname)]
行过滤名称与上面解释的正则表达式匹配的文件夹。在对于第一个(是的,这是第一个)有效的答案(在我的电脑上测试了Python2号和Python3号),我觉得被否决很难。另外,接受的答案包含我使用的相同类型的正则表达式。现在我也同意我应该早点解释的。在
你能帮我把否决票取消吗?在
你需要使用重新模块。re模块是regexp python模块。
re.compile
创建re对象,您可以使用match方法筛选列表。在作为一种模式,您可以这样使用smth:
^{pr2}$正则表达式
r'.*/[^/]*test[^/]*$'
表示将以/*test*
结尾的任何路径*
匹配为/
之外的任何路径。在相关问题 更多 >
编程相关推荐