2015-11-20 96 views
0

我需要閱讀和編輯serveral文件,問題是我大概知道這些文件的位置,但不完全。在未知目錄中讀取文件

所以所有的文件被稱爲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

,所以我需要閱讀QqTest.txt從/ MDC [編號]/unknownDir/QqTest.txt

所以我如何使用通配符讀類似蟒蛇的文件怎麼會有我在bash 即

/MDC0022/*/QqTest.txt 

回答

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

0

您可以使用os.walk。不完全是你想要的,但會完成這項工作。

rootDir = '.' 
for dirName, subdirList, fileList in os.walk(rootDir): 
    print('Found directory: %s' % dirName) 
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)