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

Python生成随机密码写入rtf文件无内容问题求助

问题原因

你的文件写入失败完全是代码语法和逻辑错误导致,核心问题有3个:

  • Python强制依靠缩进判定代码块归属,你写的with open('SavedPasswords.rtf' , 'a') as f:下方的密码生成、写入逻辑没有正确缩进至with上下文块内,加上开头多余的无内容for password in passwords:循环,代码运行时会直接触发语法错误,根本执行不到写入步骤
  • 选择.rtf富文本格式存储纯文本密码存在兼容问题,纯文本内容直接写入rtf文件大概率会出现打开后内容不显示、乱码的情况
  • 循环内反复将passwords变量重置为空字符串,和外层遍历的同名变量冲突,极易触发变量未定义的运行时错误;且写入密码时没有加换行符,就算写入成功所有密码也会挤成连续的一串,无法正常阅读。
修正后可直接运行的代码
import random

# 可直接替换为你原本定义的字符集
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()"
chars2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

# 替换为你原有的命令行交互获取参数的逻辑即可
special_chars = input("是否包含特殊字符?输入YES/NO:").strip()
amount = int(input("请输入要生成的密码数量:"))
length = int(input("请输入单条密码长度:"))

password_list = []

# 生成密码逻辑
if special_chars == "YES":
    for _ in range(amount):
        current_pwd = ""
        for _ in range(length):
            current_pwd += random.choice(chars)
        password_list.append(current_pwd)
        print(current_pwd)
elif special_chars == "NO":
    for _ in range(amount):
        current_pwd = ""
        for _ in range(length):
            current_pwd += random.choice(chars2)
        password_list.append(current_pwd)
        print(current_pwd)

# 统一写入文件
with open("SavedPasswords.txt", "a", encoding="utf-8") as f:
    for pwd in password_list:
        # 每条密码单独占一行
        f.write(f"{pwd}\n")
关键调整说明
  • 删除开头无效的空for循环,将文件写入操作放在所有密码生成完成后执行,所有写入代码正确缩进至with块作用域内,保证文件操作正常执行、内容能从缓冲区刷入磁盘
  • 将存储格式从.rtf改为.txt纯文本格式,指定utf-8编码,避免格式兼容、乱码问题
  • 重命名循环内的临时密码变量,避免和存储所有密码的列表变量重名导致的逻辑冲突
  • 写入每条密码时追加换行符,保证文件内每条密码单独占一行,方便后续查看编辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:27:20