编写文件,阅读文件并使用不同的模块进行调用

时间:2019-10-07 06:26:46

标签: python arrays

在将程序运行到文本文件并在其他模块中读取它们之后,我试图保存变量,以在原始程序中将其回调。重点是编写带有主程序4种不同结果的图。

尝试编码

#main program

a = array([[0.05562032, 0.05386903, 0.05216994, 0.03045489, 0.03029977,
        0.03014554],
       [0.        , 0.00175129, 0.00345037, 0.15353227, 0.1536874 ,
        0.15384163]])
#save paramaters in external file
save_paramaters = open('save.txt','w')
save_paramaters.write(str(a))
save_paramaters.close()

我在python模块中打开txt文件,并将其另存为变量,我手动进行了纠正(用逗号替换空格)

#new program

dat = "save.txt"
b = open(dat, "r")
c = array(b.read())

在主程序中,我现在使用

a = array([[0.05562032, 0.05386903, 0.05216994, 0.03045489, 0.03029977,
        0.03014554],
       [0.        , 0.00175129, 0.00345037, 0.15353227, 0.1536874 ,
        0.15384163])
#save paramaters in external file
save_paramaters = open('save.txt','w')
save_paramaters.write(str(a))
save_paramaters.close()

#open the variable
from program import c
from matplotlib.pyplot import figure, plot
#and try to plot it
plot(c[1][:], label ='results2')
plot(c[0][:], label ='results1')





  File "/Example.py", line 606, in example
      plot(c[1][:], label ='results2')   #model

IndexError: too many indices for array

1 个答案:

答案 0 :(得分:4)

如果您要保存一个数组,您不仅可以将其保存为文本,还需要python来解决。当您阅读它时,您将以文本(作为字符串)的形式阅读它,这就是程序所能知道的一切。

如果要保存复杂的对象,则还有其他几种选择:

  1. 您可以保存文本(如您所做的那样),但是在读取文本时将其手动解析以将其转换为数组。如果没有错误,编写起来很复杂,而且如果有比数组更复杂的东西,它将变得更加复杂。
  2. 您可以使用pickle保存它-虽然这对于几乎所有对象都是一个很好的解决方案,但是创建的文件对人类来说是不可读的,也许这不是您想要的。
  3. 一个很好的中间立场是将对象另存为JSON-这是大多数数据类型的标准,可以很好地适用于字典,列表和元组(但对于更复杂的对象将失败),更重要的是,它像您这样的人都可以阅读。

假设您使用JSON。您保存这样的列表:

import json
with open('save.txt','w') as f:
    json.dump(your_object, f)

就这么简单。要读回列表:

import json
with open('save.txt','r') as f:
    your_new_object = json.load(f)

这很简单,不是吗?注意,我使用了with语句来打开文件,以确保它们也能正确关闭,但这也更容易编写。使用泡菜非常相似,甚至具有相同的语法,但是对象被保存为字节而不是文本(因此,必须分别在文件上使用'rb''wb'模式进行读取和写入)。 / p>

要对numpy数组执行相同的操作,我们还可以使用numpy.save

np.save('save', your_numpy_array)

然后我们将其读回(扩展名为npy,并带有numpy.load

your_array = np.load('save.npy')

就可读性而言,打开文件将是半可读的(比JSON少,比泡菜更多)