读取未知目录中的文件

时间:2015-11-20 09:44:03

标签: python linux wildcard directory-structure

我需要阅读和编辑多个文件,问题是我大致知道这些文件的位置但不完全。

所以所有文件在各种不同的目录中都被称为QqTest.py。 我知道父目录被调用:

mdcArray = ['MDC0021','MDC0022','MDC0036','MDC0055','MDC0057'
            'MDC0059','MDC0061','MDC0062','MDC0063','MDC0065'
            'MDC0066','MDC0086','MDC0095','MDC0098','MDC0106'
            'MDC0110','MDC0113','MDC0114','MDC0115','MDC0121'
            'MDC0126','MDC0128','MDC0135','MDC0141','MDC0143'
            'MDC0153','MDC0155','MDC0158']

但之后还有另一个包含QqTest.txt的未知子目录

所以我需要从/ MDC读取QqTest.txt [number] /unknownDir/QqTest.txt

所以我如何在python中读取文件,类似于我在bash中的方式 即

/MDC0022/*/QqTest.txt

3 个答案:

答案 0 :(得分:2)

您可以使用名为glob的Python模块执行此操作。它支持Unix样式的路径名模式扩展。

import glob
glob.glob("/MDC0022/*/QqTest.txt")

如果您想对列表中的所有项目执行此操作,可以尝试此操作。

for item in mdcArray:
    required_files = glob.glob("{0}/*/QqTest.txt".format(item))
    # process files here

Glob documentation

答案 1 :(得分:1)

您可以按如下方式搜索根文件夹:

import os

mdcArray = ['MDC0021','MDC0022','MDC0036','MDC0055','MDC0057'
            'MDC0059','MDC0061','MDC0062','MDC0063','MDC0065'
            'MDC0066','MDC0086','MDC0095','MDC0098','MDC0106'
            'MDC0110','MDC0113','MDC0114','MDC0115','MDC0121'
            'MDC0126','MDC0128','MDC0135','MDC0141','MDC0143'
            'MDC0153','MDC0155','MDC0158']

for root in mdcArray:
    for dirpath, dirnames, filenames in os.walk(root):
        for filename in filenames:
            if filename == 'QqTest.txt':
                file = os.path.join(dirpath, filename)
                print "Found - {}".format(file)

这将显示如下内容:

Found - MDC0022\test\QqTest.txt

os.walk函数可用于遍历文件夹结构。

要在路径中搜索MDC<number>的所有文件夹,您可以使用以下方法:

import os
import re

for dirpath, dirnames, filenames in os.walk('.'):
    if re.search(r'MDC\d+', dirpath):
        for filename in filenames:
            if filename == 'QqTest.txt':
                file = os.path.join(dirpath, filename)
                print "Found - {}".format(file)

答案 2 :(得分:0)

您可以使用os.walk。不完全是你想要的,但会完成这项工作。

rootDir = '.'
for dirName, subdirList, fileList in os.walk(rootDir):
    print('Found directory: %s' % dirName)