gpt4 book ai didi

Python os.walk topdown true 与正则表达式

转载 作者:行者123 更新时间:2023-11-30 23:09:42 25 4
gpt4 key购买 nike

我很困惑为什么以下内容仅适用于 topdown=False 并且在设置为 True 时不返回任何内容?

我想使用topdown=True的原因是因为遍历目录需要很长时间。我相信自上而下会增加生成列表所需的时间。

for root, dirs, files in os.walk(mypath, topdown=False): #Why doesn't this work with True?
dirs[:] = [d for d in dirs if re.match('[DMP]\\d{8}$', d)]
for dir in dirs:
print(dir)

最佳答案

在您的代码中,您正在寻找要遍历的匹配名称([dmp]\d{8}),而在将匹配名称添加到全局列表时,您应该寻找要遍历的不匹配目录。

我修改了你的代码,这有效:

import os
import re

all_dirs = []
for root, dirs, files in os.walk("root", topdown=True):
subset = []
for d in dirs:
if not re.match('[dmp]\d{8}$', d):
# step inside
subset.append(d)
else:
# add to list
all_dirs.append(os.path.join(root, d))
dirs[:] = subset

print all_dirs

返回:

['root/temp1/myfiles/d12345678',
'root/temp1/myfiles/m11111111',
'root/temp2/mydirs/moredirs/m22222222',
'root/temp2/mydirs/moredirs/p00000001']

关于Python os.walk topdown true 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com