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

How to extract data of a file that is pointed by another file

我正在使用 python 并且我有一个名为 "indexes" 的文件 具有以下结构:

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数组。

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] 包含 indexes 中第 i 行的 class 名称,而 B[i] 包含 matlab 矩阵(var4 在您的代码中)indexes

中第 i 行指示的文件名

我使用的正则表达式不是最严格的(您可以将第一个 w+ 替换为 "class",但为了灵活起见,我将其保留为任意字母序列。

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']