通配符文件路径比较

时间:2019-04-16 20:30:10

标签: python

我有一个包含多个子文件夹的文件夹:

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

但是我没有得到任何输出。我认为也许我没有正确设置通配符比较,但不确定。有人可以看一下让我知道如何返回所需的输出吗?

1 个答案:

答案 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)