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

如何创建可复用Python模块处理passwd.txt?修复仅返回最后行问题

解决用户管理模块的复用问题

你的splitWordFile函数仅返回最后一行数据,原因是循环过程中每次都会覆盖userName、realName、actualPassword变量,循环结束后自然只剩最后一行的内容。要实现多用户数据的复用,需要将所有用户信息存储为可遍历的结构化数据,同时把登录、删除、改密等常用功能封装到一个可导入的模块中。

重构后的用户管理模块(命名为user_manager.py)

def load_users():
    """加载所有用户信息,返回以用户名为键的字典"""
    users = {}
    with open("passwd.txt", "r", encoding="utf-8") as file:
        for line in file:
            line = line.strip()
            if not line:
                continue  # 跳过空行
            parts = line.split(":")
            if len(parts) != 3:
                continue  # 跳过格式错误的行
            username, realname, password = parts
            if len(username) <= 1:
                continue  # 跳过用户名无效的行
            users[username] = {
                "realname": realname,
                "password": password.strip()
            }
    return users

def save_users(users):
    """将用户字典写入passwd.txt文件"""
    with open("passwd.txt", "w", encoding="utf-8") as file:
        for username, info in users.items():
            line = f"{username}:{info['realname']}:{info['password']}\n"
            file.write(line)

def validate_login(username, password):
    """验证用户名和密码是否匹配,返回布尔值"""
    users = load_users()
    if username not in users:
        return False
    return users[username]["password"] == password

def delete_user(username):
    """按用户名删除用户,返回是否删除成功"""
    users = load_users()
    if username not in users:
        return False
    del users[username]
    save_users(users)
    return True

def change_password(username, old_password, new_password):
    """验证旧密码后更新新密码,返回是否修改成功"""
    users = load_users()
    if username not in users:
        return False
    if users[username]["password"] != old_password:
        return False
    users[username]["password"] = new_password
    save_users(users)
    return True

独立程序的调用示例

将user_manager.py和以下三个程序放在同一目录下,即可直接导入使用:

登录程序(login.py)

from user_manager import validate_login

username = input("请输入用户名:")
password = input("请输入密码:")

if validate_login(username, password):
    print("登录成功,已授权")
else:
    print("用户名或密码错误")

删除用户程序(delete_user.py)

from user_manager import delete_user

username = input("请输入要删除的用户名:")

if delete_user(username):
    print(f"用户{username}已成功删除")
else:
    print("该用户不存在,删除失败")

修改密码程序(change_pwd.py)

from user_manager import change_password

username = input("请输入用户名:")
old_pwd = input("请输入旧密码:")
new_pwd = input("请输入新密码:")

if change_password(username, old_pwd, new_pwd):
    print("密码修改成功")
else:
    print("用户名不存在或旧密码错误,修改失败")

关键说明

  • load_users将所有用户数据加载为字典,通过用户名作为键,能快速定位目标用户
  • save_users负责将修改后的用户数据写回文件,保证所有操作的持久化
  • 每个业务逻辑都封装为独立函数,无需重复编写文件读写和数据处理代码
  • 独立程序只需导入user_manager模块,直接调用对应函数即可完成功能

内容的提问来源于stack exchange,提问作者bobby mckeown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:15:31