如何遍历目录树并继续循环?

How to traverse directory tree and continue loop?

我正在努力学习 python。我正在尝试遍历目录并打印目录路径、从目录名和文件名中提取的数字,但我的循环没有继续:它仅从第一个目录打印此信息。如何继续这个循环?

#!/usr/bin/python

import os
import re

#change directory
os.chdir('/Users/me/Pictures/')

for root, dirs, files in os.walk(os.getcwd()):
    for i in dirs: 
        val = re.search('\d+', i) 
        if val:
            a = os.path.join(root, i)
            for f in files:
                print a, val.group(0), f

您匹配的是 子目录 的名称,而不是 当前 目录的名称。如果您只有 一层 的带数字的嵌套目录,那么一旦您进入这些子目录,您的 if 语句就会出错。

我想你不明白,在每次迭代中,root 被列出的目录的路径 ,而 dirs 是一个列表目录的名称。

root 匹配:

for root, dirs, files in os.walk(os.getcwd()):
    dirname = os.path.basename(root)
    val = re.search('\d+', dirname) 
    if val:
        for f in files:
            print a, val.group(0), f