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

Python中如何向文本文件写入多个变量?密码生成器写入异常问题

解决密码生成器仅写入最后一个密码的问题

嘿,我一眼就看出问题出在哪了——你应该是在循环生成密码的时候,每次都用w模式打开文件,这种模式会清空文件原有内容再写入,所以循环结束后自然只剩最后一个密码啦。下面给你两种简单的修复方案,选哪种都能解决问题:

方案一:先收集所有密码,一次性写入(推荐)

这种方法效率更高,因为只需要打开和关闭文件一次,适合大多数场景:

#!/usr/bin/python3
import random

# 字符列表
Characters = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+-=[];\',./ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

# 获取并验证用户输入(避免非数字导致报错)
try:
    password_length = int(input("Password Length > "))
    num_of_passwords = int(input("Number of passwords to generate > "))
except ValueError:
    print("Oops! Please enter valid numbers for length and count.")
    exit()

# 先把所有生成的密码存到列表里
generated_passwords = []
for _ in range(num_of_passwords):
    # 随机生成指定长度的密码
    new_password = ''.join(random.choice(Characters) for _ in range(password_length))
    generated_passwords.append(new_password)

# 一次性写入所有密码到文件
with open("passwords.txt", "w") as file:
    # 每个密码单独占一行
    file.write("\n".join(generated_passwords) + "\n")

print(f"Done! {num_of_passwords} passwords saved to passwords.txt")

方案二:用追加模式写入文件

如果希望在生成过程中实时写入文件(比如生成非常多密码时),可以用a模式(追加模式)打开文件,这样每次写入都会加到文件末尾,不会覆盖之前的内容:

#!/usr/bin/python3
import random

Characters = "abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+-=[];\',./ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

try:
    password_length = int(input("Password Length > "))
    num_of_passwords = int(input("Number of passwords to generate > "))
except ValueError:
    print("Oops! Please enter valid numbers for length and count.")
    exit()

# 先清空文件(如果需要每次运行都生成全新的密码列表)
with open("passwords.txt", "w"):
    pass

# 循环生成并追加密码
for _ in range(num_of_passwords):
    new_password = ''.join(random.choice(Characters) for _ in range(password_length))
    # 用'a'模式打开,追加内容
    with open("passwords.txt", "a") as file:
        file.write(new_password + "\n")

print(f"Done! {num_of_passwords} passwords saved to passwords.txt")

关键知识点总结

  • w模式:每次打开都会清空文件,适合一次性写入全新内容
  • a模式:打开后会将内容追加到文件末尾,适合逐步添加内容
  • 优先选方案一,减少文件IO操作,性能更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:13