Python 2.7.5 ウィン/マック。
複数のストレージ (約 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。
私の質問は、この研究を最適化するために何ができるでしょうか?