3

问题:如何在文件开头将数据写入已经存在的文件而不写入已经存在的内容并且不将整个文件读入内存?(例如前置)


信息:

我现在正在做一个项目,程序经常将数据转储到文件中。这个文件会很快膨胀到 3-4gb。我在只有 768mb 内存的计算机上运行这个模拟。一遍又一遍地将所有这些数据拉到内存中将是一个巨大的痛苦和巨大的时间浪费。模拟已经需要足够长的时间才能按原样运行。

该文件的结构使得它产生的转储数量在开头列出一个简单的值,比如 6。每次程序进行新的转储时,我希望它增加,所以现在是 7。问题在于第 10 次、第 100 次、第 1000 次等转储。程序会输入10就好了,但是去掉下一行的第一个字母:

“9\n580,2995,2083,028\n...”

“10\n80,2995,2083,028\n...”

显然,在这种情况下,580 和 80 之间的差异是显着的。我不能失去这些价值观。所以我需要一种在其中添加一点空间的方法,以便我可以添加这些新数据而不会丢失我的数据或不必拉起整个文件然后重写它。

基本上我正在寻找的是一种前置功能。将数据添加到文件开头而不是结尾的东西。

用 Python 编程

〜n

4

3 回答 3

2

请参阅此问题的答案: 如何在 Python 中修改文本文件?

总结:不读入文件是不行的(这是由于操作系统的工作方式,而不是Python的限制)

于 2010-06-16T14:02:24.753 回答
1

它没有解决您最初的问题,但这里有一些可能的解决方法:

  • 使用 SQLite(它与您的 Python 捆绑在一起)
  • 使用更高级的数据库,RDBMS 或 NoSQL
  • 只需跟踪不同文本文件中的转储数量

前几个选项需要更多的工作,但提供了更多的灵活性。最后一个选项是解决您当前问题的最简单方法。

于 2010-06-16T14:05:03.267 回答
0

您可以很容易地创建一个新文件,输出您希望添加到该文件的数据,然后复制现有文件的内容并将其附加到新文件,然后重命名。

如果这是主要问题,这将避免读取整个文件。

于 2010-06-16T14:03:39.103 回答