我正在寻找一种方法来进行非递归os.walk()
步行,就像os.listdir()
一样。但我需要以os.walk()
返回的相同方式返回。有什么想法吗?
提前谢谢。
答案 0 :(得分:32)
next(os.walk(...))
答案 1 :(得分:13)
在循环文件名后添加break
:
for root, dirs, filenames in os.walk(workdir):
for fileName in filenames:
print (fileName)
break #prevent decending into subfolders
这是有效的,因为(默认情况下)os.walk
首先列出所请求文件夹中的文件,然后进入子文件夹。
答案 2 :(得分:6)
我的更多参数化解决方案是:
for root, dirs, files in os.walk(path):
if not recursive:
while len(dirs) > 0:
dirs.pop()
//some fency code here using generated list
编辑:修复,if / while issue。谢谢,@Dirk van Oosterbosch:}
答案 3 :(得分:1)
Kamiccolo的意思更符合这一点:
for str_dirname, lst_subdirs, lst_files in os.walk(str_path):
if not bol_recursive:
while len(lst_subdirs) > 0:
lst_subdirs.pop()
答案 4 :(得分:0)
清空目录列表
for r, dirs, f in os.walk('/tmp/d'):
del dirs[:]
print(f)