我已经完成了将所需的所有内容写入文本文件,但基本上程序需要继续回到文本文件并保存仅更改。目前它会覆盖整个文件,删除所有以前的信息。
答案 0 :(得分:1)
关于如何组织文本文件存在典型的混淆。
当人们查看文本文件时,它看起来像是行。
很自然地预计,在磁盘上它会以同样的方式运行,但事实并非如此。
文本文件逐字节写入磁盘,通常一个字符由一个字节表示(但是 在某些情况下更多字节)。一行文本恰好是一个字节序列,被终止 通过某种新的行(" \ n"," \ n \ r"或用于新行的任何内容)。
如果我们想要改变3中的第2行,我们必须在字节中适应变化,用于 第二行,不要弄乱第3行。如果我们为第2行写入太多字节,我们会 覆盖第3行的字节。如果我们写的字节太少,那么就会有stil存在(alredy 来自第2行剩余部分的字节。
这可能首先听起来像是在付出很多努力,但它是迄今为止最常用的方法 并且是最有效率的99%。
美丽,它很简单。
事实上,对于大多数文件来说,它是快速的。
相当罕见的方法是将文件的第一个版本写入磁盘,然后再附加到磁盘 关于发生了什么变化的结束说明。
阅读这样的文件意味着,它必须从期刊重新运行所有变更历史记录以找出最终结果 文件的内容。
如果你保留固定长度的行(以字节为单位测量!!不是以字符为单位),你可能会指出 修改了行并重写该行。
这很难做到很容易,而是使用二进制文件。这绝对不是 对于初学者的任务。
Go for" Republisher"图案。
使用符合您需求的任何格式(INI,CSV,JSON,XML,YAML ......)。
我个人更喜欢将数据保存为JSON格式 - json
包是Python stdlib的一部分,它
支持列表和字典,允许保存表格和树状结构。
答案 1 :(得分:0)
您正在进行的更改是否会超过程序的几个不同运行?如果没有,我建议在数据仍然在内存中时对数据进行所有更改,然后在程序终止之前将其写出来。
答案 2 :(得分:0)
您可以按如下方式打开它:
FileOpen = open("test.txt","a")