9

如何有效地将数据保存到文件(稍后将绘制)?

我从我的研究中得到了这个:

#Open new data file
f = open("data2.txt", "w")
f.write( str(yEst)  )      # str() converts to string
f.close()

到目前为止,这是我的一些代码:

for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
    for x in range(1,N+1):
       yEst = yEst + a * cos(x* i)
#print yEst
f.write( str(yEst)  )      # str() converts to string
yEst=0
f.close()

现在,当我去打开我的文件“ data2.txt”时,我无法读取数据,因为它没有“组织”。如何使用 转到下一行,f.write( str(yEst) )以便在“data2.txt”文件中有一列包含我的“yEst”数据?提前感谢您的考虑:)

PS:yEst 看起来像(在 data2.txt 文件中):48.901347147148.605785828748.114506165947.429486 ..我希望它作为一列:-->

48.9013471471 (new line)
48.6057858287 (new line)
48.1145061659 (new line)
47.4294863684    
etc ..                        
4

3 回答 3

13

你的意思是说你希望每个数据点都在自己的线上,像这样?

48.9013471471
48.6057858287
48.1145061659
47.4294863684

如果是这样,那么您可能想尝试这样的事情:

for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
    for x in range(1,N+1):
       yEst = yEst + a * cos(x* i) 
       f.write( str(yEst) + "\n"  )
f.close()

首先,要将每个数据点写入该行,它需要位于循环“内部”——这就是为什么我在调用f.write.

我添加的第二件事是+ "\n"- 这会将换行符添加到行尾。你可以把它改成你想要的任何东西!几个例子:

f.write( str(yEst) + " " )将在每个数据点后添加一个空格:

48.9013471471 48.6057858287 48.1145061659 47.4294863684

f.write( str(yEst) + "|" )将在每个数据点后添加一个管道字符:

48.9013471471|48.6057858287|48.1145061659|47.4294863684|

另一方面,如果您只想将数据保存为数组,请尝试以下操作:

yEst = 0 # or some initial value
yEstArray = []
for i in drange2(0, 2*math.pi + 0.0634665182543392 , 0.0634665182543392):
    for x in range(1,N+1):
       yEst = yEst + a * cos(x* i) 
       yEstArray.append(yEst)

然后,您可以像这样遍历数组:

for yEst in yEstArray:
    do something with yEst

或者

for yEst, index in enumerate(yEstArray):
    do something with yEst and its index
于 2012-08-28T18:44:47.243 回答
6

您需要pickle进行数据序列化。

于 2012-08-28T18:06:43.883 回答
6

Python 有三种主要的内置方式来持久化数据:

  1. pickle将对象序列化为文件;
  2. sqlite- 一个嵌入式 SQL 数据库,许多 ORM 系统都支持它(加上它是pickle对象存储的绝佳替代品);和
  3. json/ yaml- 用于网络的序列化,具有基本的数据结构和类型。
于 2012-08-28T18:13:16.293 回答