我有一个包含多个子文件夹的文件夹:
C:/Users/stacey/WorkDocs/port_a\port_1m
C:/Users/stacey/WorkDocs/port_a\job_lists
C:/Users/stacey/WorkDocs/port_a\job_lists_bu
C:/Users/stacey/WorkDocs/port_a\job_lists_bu2
C:/Users/stacey/WorkDocs/port_a\roll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_a\roll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_a\roll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_a\roll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_a\roll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_a\roll_6_oe_2015-04-03
如果路径中的最后一个文件夹以'roll'开头,那么我想询问这些文件夹。我正在尝试使用以下内容查找文件夹:
def main():
folder = 'C:/Users/stacey/WorkDocs/port_a\'
for dirname, dirs, files in os.walk(folder):
if dirname == folder+'\roll_*':
print('dirname')
所以当前的预期输出如下:
C:/Users/stacey/WorkDocs/port_a\roll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_a\roll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_a\roll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_a\roll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_a\roll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_a\roll_6_oe_2015-04-03
但是我没有得到任何输出。我认为也许我没有正确设置通配符比较,但不确定。有人可以看一下让我知道如何返回所需的输出吗?
答案 0 :(得分:1)
两个问题。首先,请记住,只要有斜线,就使用原始字符串,如下所示:
folder = r'C:/Users/stacey/WorkDocs/port_a\'
第二,您不能期望Python通过==
比较知道您的glob语法。但是,在进行前缀匹配时,只需检查前缀:
for dirname, dirs, files in os.walk(folder):
if dirname.startswith(folder+r'\roll_'):
print('dirname')
但是实际上,您可以简单地在Python中使用glob模块来完成所有这些循环工作:
import glob
for dirname in glob.glob(folder+r'\roll_*'):
print(dirname)