读取未知目录中的文件
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
您可能会使用 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)
我需要阅读和编辑几个文件,问题是我知道这些文件的大致位置,但不完全知道。
所以所有文件在不同的目录中都被称为 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
您可能会使用 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)