Python替换MATLAB程序

MATLAB读取同一文件夹下的dat文件,程序如下:

D = dir('C:\Users\x2018\Downloads\35PN440_No15_UM\*.dat');
for i = 1 : length(D)
load(['C:\Users\x2018\Downloads\35PN440_No15_UM\' D(i).name]);
end

此时,MATLAB输出了如下的变量:

img


有人知道在Python语言里怎么实现相同的功能,将每个文件的数据送给单个变量?

以下相应的Python代码,用于加载指定文件夹中的所有 .dat 文件(应该是跟你的需求一致):

import os

folder_path = r'C:\Users\x2018\Downloads\35PN440_No15_UM'  # 文件夹路径

for filename in os.listdir(folder_path):
    if filename.endswith('.dat'):
        file_path = os.path.join(folder_path, filename)
        with open(file_path, 'r') as file:
            # 执行需要的操作,这里暂时不做任何处理
            pass

在上面的代码中,我们使用了 os.listdir() 函数来遍历指定路径下的所有文件和文件夹。然后,通过判断文件的扩展名是否为 .dat,来确定是否为需要处理的文件。最后,我们使用 open() 函数打开文件,执行所需的操作。你可以根据具体的需求,在 with open 块内添加你需要的代码。如果对你有所帮助的话,请给我一个采纳,谢谢啦

代码如下:

import os
import numpy as np

dir_path = 'C:/Users/x2018/Downloads/35PN440_No15_UM/'
data = {}

for file_name in os.listdir(dir_path):
    if file_name.endswith('.dat'):
        file_path = os.path.join(dir_path, file_name)
        with open(file_path, 'rb') as f:
            d = np.fromfile(f, dtype=np.uint8)
            data[file_name] = d

print(data)

解释:这段Python代码利用os模块打开指定文件夹dir_path下的所有文件(以.dat文件为例),将其内容存储到data字典对象中。其中file_name作为字典的键名,d为键值。因此最后输出的data为一个字典对象,其中每个键都是一个文件名,对应的键值则是这个文件的内容。

MATLAB参考代码如下:

dir_path = 'C:\Users\x2018\Downloads\35PN440_No15_UM\';
data = containers.Map;

files = dir(fullfile(dir_path, '*.dat'));

for i = 1:length(files)
    file_path = fullfile(dir_path, files(i).name);
    fid = fopen(file_path, 'rb');
    data(files(i).name) = fread(fid, [1, inf], 'uint8=>uint8');
    fclose(fid);
end

variables = keys(data);
for i = 1:length(variables)
    var_name = variables{i};
    var_data = data(var_name);
    % Do something with each variable here
end

解释:这段MATLAB代码借助dir函数列出指定文件夹dir_path下所有以.dat结尾的文件,之后依次将这些文件的内容读入到以文件名为键的containers.Map对象中。keys函数可以返回Map对象的键名列表,之后可以通过data(var_name)来访问每个文件的内容。在实际使用中,可以根据需要对每个变量进行处理或者保存到其他格式的文件中。