Python 2.7.5 Win/Mac。
我正在尝试找到在多个存储(大约 128Tio)上搜索文件(超过 10000 个)的最佳方法。这些文件有特定的扩展名,我可以忽略一些文件夹。
这是我的第一个函数os.listdir
和递归:
count = 0
def SearchFiles1(path):
global count
pathList = os.listdir(path)
for i in pathList:
subPath = path+os.path.sep+i
if os.path.isfile(subPath) == True :
fileName = os.path.basename(subPath)
extension = fileName[fileName.rfind("."):]
if ".ext1" in extension or ".ext2" in extension or ".ext3" in extension:
count += 1
#do stuff . . .
else :
if os.path.isdir(subPath) == True:
if not "UselessFolder1" in subPath and not "UselessFolder1" in subPath:
SearchFiles1(subPath)
它有效,但我认为它可能会更好(更快和正确)还是我错了?
所以我尝试了os.path.walk
:
def SearchFiles2(path):
count = 0
for dirpath, subdirs, files in os.walk(path):
for i in dirpath:
if not "UselessFolder1" in i and not "UselessFolder1" in i:
for y in files:
fileName = os.path.basename(y)
extension = fileName[fileName.rfind("."):]
if ".ext2" in extension or ".ext2" in extension or ".ext3" in extension:
count += 1
# do stuff . . .
return count
“计数”是错误的,而且速度较慢。而且我想我并不真正了解它是如何path.walk
工作的。
我的问题是:我能做些什么来优化这项研究?