我有一个包含许多子文件夹的文件夹:
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)