如何限制os.walk只返回我提供的目录中的文件?
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
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来进行非递归os.walk()步行,就像os.listdir()工作一样.但我需要以同样的方式os.walk()返回.任何的想法?
先感谢您.
我需要递归地处理目录树中的所有文件,但深度有限.
这意味着例如在当前目录和前两个子目录级别中查找文件,但不是更进一步.在这种情况下,我必须处理./subdir1/subdir2/file,但不是./subdir1/subdir2/subdir3/file.
我如何在Python 3中做到最好?
目前我os.walk用来处理循环中无限深度的所有文件,如下所示:
for root, dirnames, filenames in os.walk(args.directory):
for filename in filenames:
path = os.path.join(root, filename)
# do something with that file...
Run Code Online (Sandbox Code Playgroud)
我可以想到一种计算目录separators(/)的方法root来确定当前文件的层次级别,以及break当该级别超过所需最大值时的循环.
我认为这种方法可能不安全,而且当需要忽略大量子目录时,效率可能非常低.这里的最佳方法是什么?