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

Mac系统下Python注册功能用户信息无法写入txt文件问题求助

问题原因及修复方案

以下是导致写入内容无法找到的核心原因,以及对应的修复方案:

  • 写入逻辑顺序错误:当前代码在用户还未完成二次密码确认时就将内容写入文件,若用户两次密码输入不一致,会递归调用register()函数,新的调用会以w(覆盖写入)模式重新打开文件,之前写入的内容会被清空,若用户中途结束程序就会出现文件为空的情况。
  • 文件名拼写+路径查找问题:代码中使用的文件名为databse.txt(缺少字母a,正确拼写为database.txt),同时Mac系统下Visual Studio运行Python脚本的默认工作目录不一定是脚本本身的存放目录,生成的文件会保存在工作目录下,你在脚本所在目录自然找不到对应文件。
  • 文件操作方式不规范:手动调用close()关闭文件时,如果中间步骤触发异常,会导致文件没有正常关闭,内存缓冲区的内容没有刷入磁盘,也会出现文件无内容的问题。
修正后的代码
import os

def main_menu():
    OPTION = input("Do you have an account? (yes/no)\n")
    if OPTION == "yes":
        login()
    elif OPTION == "no":
        register()

def register():
    while True:
        USERNAME = input("Create your username: \n")
        PASSWORD = input("Create your password: \n")
        PASSWORD_CHECK = input("Confirm your password: \n")
        if PASSWORD_CHECK != PASSWORD:
            print("Your passwords do not match. Try again. \n")
            continue
        # 密码校验通过后再写入文件
        # 获取当前脚本所在目录,将文件生成到同目录下,避免找不到
        script_dir = os.path.dirname(os.path.abspath(__file__))
        file_path = os.path.join(script_dir, "database.txt")
        # 使用with上下文管理器自动处理文件关闭,无需手动调用close
        with open(file_path, "w", encoding="utf-8") as database:
            # 写入时添加换行符,方便后续登录功能拆分用户名和密码
            database.write(USERNAME + "\n")
            database.write(PASSWORD + "\n")
        print("You have successfully created an account! Welcome!")
        # 后续菜单逻辑写在这里
        break

def login():
    pass
    
main_menu()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:45:04