1

因此,我在地下室发现了这台破旧的笔记本电脑(我现在从大约 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天左右!显然不是最有效的程序,但它也只运行在一个只有 800 MHz 的内核上

4

2 回答 2

3

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

f.write(" "*30)

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

f.seek(0)
f.write(str(counter)+" primes")
于 2012-12-17T12:13:46.480 回答
-1

简短的回答:不可能

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

于 2012-12-17T12:11:57.527 回答