Python:在纯文本文件上写一个很长的连续数字列表

时间:2017-05-03 18:25:36

标签: python list python-3.x

我正在尝试从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")

1 个答案:

答案 0 :(得分:5)

不要将值存储在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("%016d\n" % i)
print("Finished")

这将缓冲write s,直到缓冲区填满,然后刷新它,这样你就可以随时写入,并有固定的内存开销。

注意:代价可能有点过于简洁,你可以单行编写,将所有工作推送到C层(在CPython参考解释器上),通过用以下代码替换循环:

    file.writelines(map("%016d\n".__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中所做的更昂贵),但我认为我指出它是完整的。