通配符文件路径比较



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

C:/Users/stacey/WorkDocs/port_aport_1m
C:/Users/stacey/WorkDocs/port_ajob_lists
C:/Users/stacey/WorkDocs/port_ajob_lists_bu
C:/Users/stacey/WorkDocs/port_ajob_lists_bu2
C:/Users/stacey/WorkDocs/port_aroll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_aroll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_aroll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_aroll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_aroll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_aroll_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_aroll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_aroll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_aroll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_aroll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_aroll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_aroll_6_oe_2015-04-03

但是我没有得到任何输出。我想也许我错误地设置了通配符比较,但不确定。 如何返回所需的输出?

两个问题。首先,请记住在有斜杠时使用原始字符串,如下所示:

folder = r'C:/Users/stacey/WorkDocs/port_a'

其次,你不能指望Python通过==比较来了解你的通配语法。但是,当您进行前缀匹配时,只需检查前缀:

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)

最新更新