我想在c://下搜索和打印目录,但只列出第一级和第二级,包含SP30070156-1。
使用python 2获取此功能的最有效方法是什么,而脚本没有运行整个子目录(在我的情况下需要很长时间这么多)
典型的目录名称如下:
Visibility
答案 0 :(得分:1)
您可以尝试基于os.walk()创建一个函数。这样的事情应该让你开始:
import os
def walker(base_dir, level=1, string=None):
results = []
for root, dirs, files in os.walk(base_dir):
_root = root.replace(base_dir + '\\', '') #you may need to remove the "+ '\\'"
if _root.count('\\') < level:
if string is None:
results.append(dirs)
else:
if string in dirs:
results.append(dirs)
return results
然后你可以用string ='SP30070156-1'和1级然后2级调用它。
不确定它是否会超过40秒。
答案 1 :(得分:0)
这里是我使用的代码,该方法快速列出,如果过滤了关键字,那么它甚至更快
import os
MAX_DEPTH = 1
#folders = ['U:\I-Project Works\PPM 20003171\PPM 11-12 NSW', 'U:\I-Project Works\PPM 20003171\PPM 11-12 QLD']
folders = ['U:\I-Project Works\PPM 20003171\PPM 11-12 NSW']
try:
for stuff in folders:
for root, dirs, files in os.walk(stuff, topdown=True):
for dir in dirs:
if "SP30070156-1" in dir:
sp_path = root + "\\"+ dir
print(sp_path)
raise Found
if root.count(os.sep) - stuff.count(os.sep) == MAX_DEPTH - 1:
del dirs[:]
except:
print "found"