读取未知目录中的文件

Read file in unknown directory

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

所以所有文件在不同的目录中都被称为 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[number]/unknownDir/QqTest.txt

中读取 QqTest.txt

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

/MDC0022/*/QqTest.txt

您可以使用名为 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

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

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

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

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)