在for循环的每次迭代中保存变量并稍后加载

时间:2018-11-13 20:54:32

标签: python loops save load

我想将变量mnrXY(请参见下面的代码)保存在一个文件中,例如{{1 }}和 每次迭代都重复一个新文件名 迭代编号,例如file_1

在MATLAB中,我可以简单地执行file_2,这样save(['data_',int2str(i),'.mat'],'variable1', 'variable2' )将包含data(1)mnr,{{1 }}; X将包含Ydata(2)mnr及其新值,依此类推

我如何在Python中做同样的事情?

X

3 个答案:

答案 0 :(得分:3)

pickle库是前往此处的方法。

import pickle
Tests = 5
data = {}
for i in range(Tests):
    data['r'] = 5
    data['m'] = 500
    data['n'] = 500
    data['X'] = np.random.rand(data['m'],data['n'])
    data['Y'] = np.random.rand(data['m'],data['n'])
    with open('data{}.pickle'.format(i), 'wb') as f:
        pickle.dump(data, f)

这使您以后可以访问数据字典。例如,

with open('data0.pickle', 'rb') as f:
    data = pickle.load(f)
r = data['r']
m = data['m']

以此类推。

答案 1 :(得分:0)

这是在python中执行相同操作的方法。

import numpy as np
Test = 2
for i in range(Test):
    r = 5
    m = 500
    n = 500
    X=np.random.rand(m,n)
    Y=np.random.rand(m,n)
    file_name = 'test_'+str(i)
    open(file_name,'w').write(str(r) + str(m) + str(n) + str(X) + str(Y))

答案 2 :(得分:0)

如果您不使用任何库就可以这样做,这是我的解决方案:

import numpy as np
Test = 5
for i in range(Test):
    r = 5
    m = 500
    n = 500
    X=np.random.rand(m,n)
    Y=np.random.rand(m,n)

    file = open('file_{}'.format(i+1), 'w')
    file.write('r = {};m = {};n = {};X = {};Y = {}'.format(r, m, n, X, Y))
    file.close()

加载已保存的变量

exec(open('file_1', 'r').read())