如何遍历目录树并继续循环?
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
我正在努力学习 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