You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python随机字符串生成后写入txt文件仅保存1条如何解决

问题排查与修复方案

核心问题定位

  • 文件打开模式错误:你在for循环内部每次都以w(覆盖写模式)打开文件,每次打开都会清空原有内容,所以循环结束后只保留最后一次写入的内容
  • 冗余操作:with上下文管理器会自动处理文件关闭,手动调用handle.close()属于多余操作
  • 缺失依赖导入:代码没有导入random、string两个依赖模块,直接运行会报错
  • 性能损耗:循环内频繁打开关闭文件,生成数量大时会大幅降低运行效率

修复后代码

import random
import string

def number_gen():
    n = 0
    repet = int(input("How many number do you want to generate :"))
    # 提前拼接字符集,避免循环内重复计算
    chars = string.ascii_letters + string.digits
    # 把文件操作移到循环外部,用w模式一次打开写入所有内容
    with open(r'C:\Users\bad\OneDrive\Bureau\Number-Generator\Number.txt', 'w', encoding='utf-8') as handle:
        for i in range(repet):
            x = ''.join(random.choice(chars) for _ in range(24))
            y = ''.join(random.choice(chars) for _ in range(6))
            z = ''.join(random.choice(chars) for _ in range(27))
            writinge = f"{x}.{y}.{z}"
            handle.write(writinge + "\n")
            n += 1
            print(f'{n}|{repet} Generated --- {writinge}')

写法规范优化说明

  • 用string.ascii_letters替代手动拼接大小写字母,简化代码
  • 提前定义公共字符集变量,避免循环内重复拼接字符串,提升性能
  • 路径字符串加r前缀标记为原始字符串,不需要转义反斜杠,可读性更高
  • 打开文件时指定encoding='utf-8',避免跨环境出现编码乱码问题
  • 打印输出直接复用已拼接的writinge变量,避免重复拼接字符串

内容的提问来源于stack exchange,提问作者BAD3VA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 06:06:05