如何提取另一个文件指向的文件的数据

时间:2015-03-05 13:47:34

标签: python file-io

我正在使用python,我有一个名为“索引”的文件 具有以下结构:

class1 fileNameX
class2 fileNameY
class3 fileNameZ

是与文件名关联的类的集合。

fileNameX是一个有2个矩阵的matlab文件。我可以提取数据并直接从fileNameX连接它,如下所示:

mat = scipy.io.loadmat('filenameX')
var1 = mat['dataL']
var2 = mat['dataR']
var3=np.concatenate((var1, var2), axis=0)
var4 = var3.reshape(1,387200)

我的问题是如何自动获取索引文件中每个文件名的var4中的连接格式。

我想要的输出是包含类的向量“A”,我自己也可以这样做,问题是在每个文件名的var4形式上得到向量“B”。

谢谢你,任何帮助都很感激。

编辑:类是数字(1-100),我有索引文件指向的许多文件。有没有办法自动加载所有这些不是一个接一个? 最后,矢量A和矩阵B需要是numpy数组。

2 个答案:

答案 0 :(得分:0)

A = []
B = []
with open('indexes') as infile:
    for line in infile:
        line = line.strip()
        if not line: continue
        className, fname = line.split(None,1)
        A.append(className)
        mat = scipy.io.loadmat('filenameX')
        var = np.concatenate((mat['dataL'], mat['dataR']), axis=0).reshape(1,387200)
        B.append(var)

现在,A[i]包含iindexes行的类名,而B[i]包含matlab矩阵(代码中为var4)在i

indexes行中指明的文件名

答案 1 :(得分:0)

我使用的正则表达式并不是最严格的(你可以用#34替换第一个w +;类#34;但是为了灵活性我把它留作任何字母序列。

import re

#you would load this with open(indexfilename,"rt").read()
index_file_content = "(class 1, fileNameX)\n(class 2, fileNameY)\n(class 3, fileNameZ)"

files = re.findall("\(\w+\s+\d+,\s+(\w+)\)", filecontent)

# files == ['fileNameX', 'fileNameY', 'fileNameZ']