You need to enable JavaScript to run this app. 基于Python的TXT用户数据库开发:如何提取存储数据用作登录凭据
优惠活动
大模型
产品
解决方案
定价
更多

基于Python的TXT用户数据库开发:如何提取存储数据用作登录凭据

从本地TXT存储文件提取凭据实现登录校验的落地方法

一、先修正你现有代码里的基础bug

  • 密码校验分支变量名写错:判断密码不合规时,代码重新赋值的是username变量,而非password,逻辑完全错位,输入不合规密码后会直接覆盖之前输入的用户名数据。
  • 现有login()函数无实际作用:仅调用open()打开了其他路径的脚本文件,既没有读取文件内容,也没有实现任何登录交互逻辑,属于空函数。
  • 字段格式不统一:后续解析时需要保证写入文件的「字段名: 字段值」格式和解析逻辑完全匹配,避免大小写、冒号前后空格不一致导致的提取失败。

二、核心:TXT存储文件的结构化解析实现

你的文件存储结构是单条账号信息块之间用3个换行分隔,块内逐行存储键值对格式的用户信息,可以按以下逻辑提取所有存储数据:

  1. 一次性读取全文件内容
  2. 按连续空行拆分出每一个独立的账号信息块
  3. 对每个块逐行解析,按第一个冒号拆分键和值,过滤无效空行
  4. 把所有解析结果存为结构化的账号列表,方便后续校验

对应可直接运行的解析代码:

def parse_accounts_from_txt(file_path):
    # 读取文件全内容,指定utf-8编码避免中文乱码
    with open(file_path, 'r', encoding='utf-8') as f:
        raw_content = f.read()
    # 按你写入时的3个换行分割独立账号块
    account_blocks = [block.strip() for block in raw_content.split('\n\n\n') if block.strip()]
    valid_accounts = []
    for block in account_blocks:
        single_account = {}
        for line in block.split('\n'):
            line = line.strip()
            if not line:
                continue
            # 按第一个冒号拆分,避免值本身带冒号导致拆分错误
            field_name, field_value = line.split(':', 1)
            # 统一转小写做键名,消除大小写不匹配的问题
            single_account[field_name.strip().lower()] = field_value.strip()
        if single_account:
            valid_accounts.append(single_account)
    return valid_accounts

三、登录校验逻辑实现

拿到结构化的账号列表后,登录校验流程不需要复杂逻辑:

  1. 提示用户输入待校验的用户名、密码
  2. 遍历所有已存储的账号条目,匹配对应用户名
  3. 匹配到用户名后核对密码一致性,返回校验结果

对应实现代码:

def do_login(database_file_path):
    # 加载所有已存储的账号数据
    saved_accounts = parse_accounts_from_txt(database_file_path)
    input_user = input("请输入登录用户名:").strip()
    input_pwd = input("请输入登录密码:").strip()
    for acc in saved_accounts:
        if acc.get('username') == input_user:
            if acc.get('password') == input_pwd:
                print("登录成功")
                return True
            print("密码错误,请重新输入")
            return False
    print("未查询到对应用户名,请检查输入")
    return False

关键注意事项

  • 当前实现为明文存储密码到TXT文件,正式使用场景绝对禁止这种存储方式,至少要对密码做哈希加密后再写入文件,避免文件泄露导致全部账号凭据暴露。
  • 写入存储文件的目标文件夹要提前手动创建,不然程序写文件时会抛出路径不存在的错误。
  • 解析逻辑和写入逻辑的分隔格式要严格对齐,比如调整了写入时的换行数,解析时的分割分隔符也要同步修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 01:36:00