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

Python中向.txt文件追加变量内容失败问题求助

代码无法写入accounts.txt文件的问题排查与修复

代码能正常执行,但无法向accounts.txt写入任何内容,也不抛出错误。涉及的逻辑包括生成用户名、密码的函数,读取邮箱的函数,以及向文件追加内容的代码。尝试多种方法后仍未解决,需要修复方案或替代思路。

写入文件的核心代码

s = "----- Account -----"
u = "Username: " + username
p = "Password: " + password
e = "Email: " + email
d = "-------------------"
with open("accounts.txt", "a") as f:
    f.write(s)
    f.write("\n")
    f.write(u)
    f.write("\n")
    f.write(p)
    f.write("\n")
    f.write(e)
    f.write("\n")
    f.write(d)
    f.write("\n")

变量生成/读取函数

def pass_gen():
    chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+"
    password = ""
    for c in range(16):
        password += random.choice(chars)
    return password

def user_gen():
    suffix = ['Best', 'Ratchet', 'Baller', 'Big', 'Money']
    name_list = ['Lil', 'Big', 'Young', 'Old', 'Dope', 'Savage', 'Crazy', 'Swag', 'Dank', 'Lit', 'Savage', 'Crazy']
    prefix = ['Swag', 'Dank', 'Lit', 'Savage', 'Crazy']
    
    name = random.choice(suffix) + random.choice(name_list) + random.choice(suffix)
    
    return name

def get_email():
    global emailchoice
    
    with open("email.txt", "r") as f:
        emails = f.readlines()
        tempmail = emails[emailchoice].strip()
    return mail

已尝试的解决方法

  • 将所有内容改为变量而非直接文本
  • 用print()替代file.write进行测试
  • 将文件对象名从"file"改为"f"
  • 调整with语句的格式
  • 其他未列举的方法

问题排查与修复

  1. get_email函数的致命错误
    函数内定义了tempmail存储读取到的邮箱,但最后返回的是未定义的mail变量,这会直接抛出NameError。如果代码没报错,说明这个函数根本没被执行,或者异常被静默捕获了。修复方法:

    def get_email():
        global emailchoice
        
        with open("email.txt", "r") as f:
            emails = f.readlines()
            tempmail = emails[emailchoice].strip()
        return tempmail  # 改为返回正确的变量tempmail
    
  2. 检查变量是否正确赋值
    确保username、password、email三个变量被正确初始化:

    username = user_gen()
    password = pass_gen()
    email = get_email()  # 使用修复后的函数获取邮箱
    
  3. 验证文件路径
    open("accounts.txt", "a")使用相对路径,文件会生成在脚本的当前工作目录下。可以打印当前路径确认:

    import os
    print(os.getcwd())  # 输出当前工作目录,检查accounts.txt是否生成在此处
    
  4. 检查random模块是否导入
    pass_gen和user_gen函数使用了random.choice,如果未导入random模块会抛出NameError。确保脚本开头添加:

    import random
    
  5. 简化写入逻辑的替代方案
    如果上述修复后仍有问题,可以尝试一次性写入所有内容,减少IO操作次数:

    content = f"""----- Account -----
    

Username: {username}
Password: {password}
Email: {email}

"""
with open("accounts.txt", "a", encoding="utf-8") as f:
f.write(content)

内容的提问来源于stack exchange,提问作者TACO_MASTA
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:40