Python:在纯文本文件上写一篇非常长的连续数字列表



我正在尝试做一个非常长的连续数字列表,从0开始,并以大约10,000,000,000或更多的方式完成,并将其写入纯文本文件。我目前使用的所有RAM(12 GB(并使我的计算机重新启动。

i = 0
password = []
file = open("pass.txt", "a")
for i in range (10000):
    password.append("%016d" % (i,))
for elem in password:
    file.write(str(elem) + 'n')
file.close
print("Finished")

不要将值存储在list中,只需直接写入:

# Use with statement to automatically close file properly, even on exception
# as soon as block finishes
with open("pass.txt", "a") as file:
    for i in range(10000):
        file.write("%016dn" % i)
print("Finished")

将缓冲write s,直到缓冲区填充,然后冲洗,因此您会随身携带,并用固定的内存开销。

注意:以可能有点简洁的代价,您可以单行写作,将所有作品推向C层(在Cpython参考解释器上(,通过用以下方式替换循环:

    file.writelines(map("%016dn".__mod__, range(10000)))
    # Or using format, which looks less hacky by avoiding manual use of operator overloads:
    file.writelines(map("{:016d}n".format, range(10000)))

这是一个微型化(文件I/O几乎肯定比您在Python中所做的要贵(,但我认为我会指出的是完整性。

最新更新