Python写文件仅输出少量行无法写入全部随机数是什么原因?
问题原因及修复方案
你遇到的问题由两个错误的代码逻辑共同导致:
- 你使用了
w(覆盖写)模式打开文件:该模式打开已存在的文件时,会直接清空文件所有原有内容,再写入新内容 - 你将打开文件的
with open语句放在了while循环内部:每次写入1个随机数就会重新打开一次文件,前一次写入的内容会被直接清空,循环执行100次后,文件中仅会保留最后一次写入的随机数,以及末尾的换行符,也就是你看到的两行内容。
方案1(推荐):将文件打开逻辑移到循环外部
仅打开一次文件,连续写入所有100个随机数,IO效率更高:
import random wrote = 0 with open('users.txt', 'w') as f: while True: if wrote == 100: print("writing finished!") break f.write(str(random.randint(1, 9999999999)) + '\n') wrote = wrote + 1
方案2(不推荐):修改文件打开模式为追加模式
如果必须每次循环单独打开文件,可以将模式改为a(追加写),写入新内容时不会清空原有内容,但频繁打开关闭文件会降低运行效率:
import random wrote = 0 while True: if wrote == 100: print("writing finished!") break else: with open('users.txt', 'a') as f: f.write(str(random.randint(1, 9999999999)) + '\n') wrote = wrote + 1
内容的提问来源于stack exchange,提问作者Abolfazl Malekpour
相关产品推荐
相关产品推荐

