将数据保存为以后要读取的项目

时间:2018-06-01 23:45:34

标签: python file writing

我只是将项目保存到文件中以供日后阅读时遇到问题。当我保存文件时,它不是将项目列为单个项目,而是将数据作为一个长字符串附加在一起。根据我的谷歌搜索,这不应该附加项目。我做错了什么?

提前致谢

代码:

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  

2 个答案:

答案 0 :(得分:1)

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

最重要的是,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]将打印为文本。

答案 1 :(得分:0)

尝试在docs中看到的行末尾添加换行符('\n')。这应解决将项目列为单个项目的问题,但您创建的文件可能不会有很大的结构。

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

如果您提供recnum变量+原始f.close()的非常小的示例,则您有问题,因为您有with语句,请参阅here at SO。< / p>