在Python中将计算信息写入文本文件的前面

时间:2012-12-17 12:03:55

标签: python file primes

所以我在地下室发现了这台糟糕的旧笔记本电脑(我现在从约05年左右搬出了姐姐),我一直在用它在Python上运行大量计算并将其搁置几个小时来搞乱它。 我的最新项目是将前10亿个素数保存到文本文件中(毫无意义,我知道,但有点有趣) 所以到目前为止我的代码是:

from time import time
start_time = time()
f = open('primes.txt', 'w')
counter = 1
number = 1
while counter <= 1000000000:
    if prime(number): #NOTE: prime is a function checking if a number is prime
        f.write(str(counter) + '   ' + str(number) + '\n')
        counter += 1
    number += 1

f.write(time() - start_time)
f.write('This file contains the first %s primes.' % (counter)) 

f.close

我遇到的问题是最后的问题。我希望时间和素数列在文件的第一行,而不是结尾,因为十亿素数是一个非常长的文本文件。 显然,在计算/写入素数之前我不能写它,因为时间和素数都是0。

在计算和写完之后,有没有办法将信息插入文件的开头(第一行)?

解决了! 在开始时添加空格然后使用f.seek(0)完美地工作。至于该计划,前1亿约需3天!显然不是最有效的程序,但它也只运行在1核心上,只有800 MHz

2 个答案:

答案 0 :(得分:3)

你可以在文件的开头写一些空格

f.write(" "*30)

然后,当你完成计算后,你会回到开头并覆盖这个空格:

f.seek(0)
f.write(str(counter)+" primes")

答案 1 :(得分:-1)

简短回答:不可能

答案很长:您需要在其他地方收集数据,将标题写入新文件,然后在标题后复制/追加收集的数据。