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

Python运行程序写入文本文件时如何避免覆盖原有用户输入数据?

问题根因

现有代码存在3个影响数据持久化的错误:

  • 打开data.txt时使用"w"覆盖写入模式,该模式打开文件瞬间会清空全部原有内容,每次运行都从文件起始位置写入新数据,旧数据自然会被删除
  • Python文件对象没有add()写入方法,原代码实际运行时会直接抛出AttributeError,根本无法完成写入操作
  • 代码未做文件关闭处理,极端场景下会出现写入内容落盘失败的问题
修复方案
  1. 将文件打开模式从"w"替换为"a"追加写入模式:该模式会保留文件全部原有内容,将写入指针定位到文件末尾,新写入的内容会直接追加在旧数据之后,不会覆盖历史记录
  2. 将错误的add()调用替换为标准文件写入方法write()
  3. 推荐使用with上下文管理器操作文件,写入完成后会自动释放文件资源,无需手动调用close()
  4. 每条记录末尾添加分隔线,区分不同批次存入的账号信息,提升后续读取解析的便利性

修正后的可运行代码(已将原代码中英文提示翻译为中文):

import time

username_Database = []
password_Database = []

username = input("请输入用户名\n")
username_Database.append(username)

password = input("请输入密码\n")
password_Database.append(password)

print(f'注册成功!\n你的用户名是:{username_Database[0]}\n你的密码是:{password_Database[0]}\n')
print("正在保存信息...")

# 追加模式打开文件,自动处理文件关闭
with open("data.txt", "a", encoding="utf-8") as file:
    file.write(f"用户名: {username_Database[0]}\n")
    file.write(f"密码: {password_Database[0]}\n")
    # 追加分隔线区分不同账号记录
    file.write("-" * 20 + "\n")

time.sleep(2)
注意事项

明文存储密码存在严重安全风险,如果是正式使用场景,务必对密码做加盐哈希处理后再存入文件,不要直接保存明文密码。后续需要读取历史数据时,逐行遍历data.txt按写入规则解析即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:18:26