如何将数据保存到单独项目而不是一个长字符串上的文件中?



我无法简单地将项目保存到文件中以供以后阅读。当我保存文件时,它不是将项目列为单个项目,而是将数据作为一个长字符串附加到一起。根据我的谷歌搜索,这不应该附加项目。

我做错了什么?

法典:

with open('Ped.dta','w+') as p:  
p.write(str(recnum))  # Add record number to top of file  
for x in range(recnum):    
p.write(dte[x])        # Write date  
p.write(str(stp[x]))   # Write Steps number  

由于您不显示数据或输出,因此我无法确定。但似乎您正在尝试使用像print函数这样的write方法,但存在重要差异。

最重要的是,write不会在其写入字符后面使用任何分隔符(例如默认为print的空格(或结尾(n例如默认为print的空格(。 因此,您的数据和步数之间或行之间没有空格,因为您没有编写它们,Python 也没有添加它们。

所以添加这些。尝试线条

p.write(dte[x]) # Write date
p.write(' ') # space separator
p.write(str(stp[x])) # Write Steps number
p.write('n') # line terminator

请注意,我不知道您编写的"日期"的格式,因此您可能需要在编写之前将其转换为文本。


现在我有时间了,我将实现@abarnert的建议(在评论中(,并向您展示如何获得print函数的优势并仍然写入文件。只需在 Python 3 中使用file=参数,或者在执行语句后在 Python 2 中使用 参数

from __future__ import print_function

使用print您可以在一行中完成上面的四行,因为print会自动添加空格分隔符和换行符:

print(dte[x], str(stp[x]), file=p)

这假定日期基准dte[x]将打印为文本。

尝试在行尾添加一个换行符('n'(,如您在文档中看到的那样。这应该可以解决"将项目列为单个项目">的问题,但您创建的文件可能结构不大。

对于进一步的谷歌搜索,您可能需要检查序列化,以及 python 标准库中涵盖的jsoncsv格式。

如果您给出recnum变量 + 原始变量的非常小的例子,您的问题将是合适的f.close()因为您有一个with语句,请参阅此处 SO.

相关内容

最新更新