【问题标题】:Read file in unknown directory读取未知目录中的文件
【发布时间】:2015-11-20 09:44:02
【问题描述】:

我需要读取和编辑多个文件,问题是我大致知道这些文件在哪里,但并不完全。

所以所有文件在不同的目录中都被称为 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

【问题讨论】:

    标签: python linux wildcard directory-structure


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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)
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-09-24
          • 1970-01-01
          • 2012-06-25
          • 2012-04-09
          • 2021-03-03
          • 2015-02-19
          • 1970-01-01
          • 2015-04-22
          相关资源
          最近更新 更多