用Python将数据写入文件

2024-04-26 00:52:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能有效地将数据保存到一个文件中(稍后我将绘制该文件)?

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

#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 ..                        

Tags: 文件to数据intxtnewforclose
1条回答
网友
1楼 · 发布于 2024-04-26 00:52:35

Python有三种内置的持久化数据的方法:

  1. pickle将对象序列化为文件
  2. sqlite-一个嵌入式SQL数据库,它受到许多ORM系统的支持(对于对象存储来说,除了pickle之外,还有一个很好的选择);以及
  3. json/yaml-用于web的序列化,具有基本的数据结构和类型。
网友
2楼 · 发布于 2024-04-26 00:52:35

你是说你希望每一个数据点都在自己的行上,像这样吗?

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
网友
3楼 · 发布于 2024-04-26 00:52:35

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

相关问题 更多 >