Skip to main content
 首页 » 编程设计

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

2025年05月04日24Renyi-Fan

我正在尝试做一个非常长的连续数字列表,从 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") 

请您参考如下方法:

不要将值存储在列表中,直接写入即可:

# 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 直到缓冲区填满,然后刷新它,这样你就可以边写边写,内存开销是固定的。

注意:以可能过于简洁为代价,您可以通过将循环替换为:

    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 中所做的更昂贵),但我想我会指出它是为了完整性。