我正在编写一个脚本,它将从某个文件夹树中找到所有* .R3D并将它们编入索引。我已经看到了很多关于如何最好地浏览文件夹和子文件夹的例子,但它们看起来并不漂亮,而且因为我在服务器上工作,我想尽量减少负载。
我的问题:我想找到一种最有效的方式来抓取文件夹和子文件夹来索引/查找某种文件类型。
答案 0 :(得分:6)
您可能想要使用包装os.walk
的辅助函数,如下所示:
import os
def filesByPattern(directory, matchFunc):
for path,dirs,files in os.walk(directory):
for f in filter(matchFunc, path):
yield os.path.join(path, f)
certainFolder = '.'
allR3DFiles = filesByPattern(certainFolder, lambda fn: fn.endswith('.R3D'))
答案 1 :(得分:3)
改善@ phihag的例子:
def all_files(directory):
for path, dirs, files in os.walk(directory):
for f in files:
yield os.path.join(path, f)
r3d_files = [f for f in all_files(your_directory)
if f.endswith('.R3D')]
答案 2 :(得分:0)
os.walk()
正是如此。
链接示例:
import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
print root, "consumes",
print sum(getsize(join(root, name)) for name in files),
print "bytes in", len(files), "non-directory files"
if 'CVS' in dirs:
dirs.remove('CVS') # don't visit CVS directories