0

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

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

~

4

1 回答 1

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'))
于 2013-09-26T06:30:23.143 回答