根据目录过滤文件

时间:2013-09-26 06:21:29

标签: python python-2.7

我的目录包含多个子目录,每个子目录也包含  多个目录。我的文件存在于所有子目录中,需要根据子目录选择文件。我可以得到一些输入。

like  <cell 1> <cell 2> <cell 3>
each cell1
     <job 1> <job 2> < job 3>
each job contain sample. txt

类似的cell2和cell 3.所以我想从每个cell / job1目录中提取sample.txt。 并编写以下程序。 修复问题后修改程序。我们能做得更好吗

#!/usr/bin/py
import os
def find_all(name, path):
    result = []
    for root, dir, files in os.walk(path):
        print "root %s dir %s" %(root, dir)
        if "job1" in root:
            print "\n"
            if name in files:
                result.append(os.path.join(root, name))
    return result
name = "sample.txt"
path = "."
data = find_all(name, path)
print data

1 个答案:

答案 0 :(得分:1)

产生元组的第二个元素(通过os.walk)是目录列表,而不是目录名。

您应该检查root而不是dirs

请尝试以下操作:

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if os.path.basename(root) == 'job1':
            if name in files:
                result.append(os.path.join(root, name))
    return result

使用glob.glob的替代方案:

import glob
import os

data = glob.glob(os.path.join('cell*', 'job1', 'sample.txt'))