如何将文件夹抓取到索引文件?

时间:2011-12-14 13:41:16

标签: python

我正在编写一个脚本,它将从某个文件夹树中找到所有* .R3D并将它们编入索引。我已经看到了很多关于如何最好地浏览文件夹和子文件夹的例子,但它们看起来并不漂亮,而且因为我在服务器上工作,我想尽量减少负载。

我的问题:我想找到一种最有效的方式来抓取文件夹和子文件夹来索引/查找某种文件类型。

3 个答案:

答案 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