os.walk,无需深入研究以下目录
问题描述:
如何限制os.walk
仅返回我提供的目录中的文件?
How do I limit os.walk
to only return files in the directory I provide it?
def _dir_list(self, dir_name, whitelist):
outputList = []
for root, dirs, files in os.walk(dir_name):
for f in files:
if os.path.splitext(f)[1] in whitelist:
outputList.append(os.path.join(root, f))
else:
self._email_to_("ignore")
return outputList
答
使用walklevel
函数.
import os
def walklevel(some_dir, level=1):
some_dir = some_dir.rstrip(os.path.sep)
assert os.path.isdir(some_dir)
num_sep = some_dir.count(os.path.sep)
for root, dirs, files in os.walk(some_dir):
yield root, dirs, files
num_sep_this = root.count(os.path.sep)
if num_sep + level <= num_sep_this:
del dirs[:]
它的作用与os.walk
相似,但是您可以向其传递一个level
参数,该参数指示递归进行的深度.
It works just like os.walk
, but you can pass it a level
parameter that indicates how deep the recursion will go.