python程序问题

如何让python登录注册程序在不出现其他文件的情况下依然能够存储用户信息?

  • 三个方法。

  • 使用 Python 内置的 shelve 模块,它允许创建一个简单的 key-value 存储,以便在程序运行期间存储用户信息。使用 shelve,将用户信息存储在一个本地文件中。


import shelve

# 创建 shelve 文件
user_data = shelve.open("user_data.db")

# 添加用户数据
user_data["username"] = {"password": "password123"}

# 关闭文件
user_data.close()

  • 使用 Python 内置的 configparser 模块,它允许创建和解析 INI 文件格式。INI 文件格式是一个简单的文本文件格式,用于存储配置信息和其他应用程序数据。
import configparser

# 创建配置文件
config = configparser.ConfigParser()
config["USER_DATA"] = {"username": "password123"}

# 将配置写入文件
with open("user_data.ini", "w") as config_file:
    config.write(config_file)


  • 使用 Python 内置的 json 模块,它允许创建和解析 JSON 格式的数据。JSON 格式是一种轻量级的数据交换格式,常用于存储和传输数据。
import json

# 创建用户数据
user_data = {"username": "password123"}

# 将用户数据写入 JSON 文件
with open("user_data.json", "w") as json_file:
    json.dump(user_data, json_file)


小魔女参考了bing和GPT部分内容调写:
可以使用数据库来存储用户信息,比如MySQL,SQLite等。可以使用Python的数据库接口(DB-API)来连接数据库,然后创建表来存储用户信息,比如用户名、密码、邮箱等。

例如,使用MySQL,可以使用Python的MySQLdb模块来连接数据库,然后创建表:

import MySQLdb

# 连接数据库
db = MySQLdb.connect("localhost", "username", "password", "database_name")

# 使用cursor()方法获取操作游标 
cursor = db.cursor()

# 如果数据表已经存在使用 execute() 方法删除表
cursor.execute("DROP TABLE IF EXISTS users")

# 创建数据表SQL语句
sql = """CREATE TABLE users (
         username  CHAR(20) NOT NULL,
         password  CHAR(20) NOT NULL,
         email  CHAR(50))"""

cursor.execute(sql)

# 关闭数据库连接
db.close()

然后,可以使用SQL语句来插入、更新和查询用户信息,比如:

# 插入用户信息
sql = "INSERT INTO users(username, password, email) VALUES ('%s', '%s', '%s')" % (username, password, email)

# 更新用户信息
sql = "UPDATE users SET password = '%s' WHERE username = '%s'" % (password, username)

# 查询用户信息
sql = "SELECT * FROM users WHERE username = '%s'" % username

回答不易,记得采纳呀。

将用户信息定义成全局变量,在登录时改变保存和更新全局变量的值,然后在要使用的时候import导入使用,比如:

  • 建立一个名字为userInfo.py的文件,用于处理用户信息:

def _init():  # 初始化
    global _user_info_dict
    _user_info_dict = {}
 
 
def set_value(key, value):
    # 定义一个全局变量
    _user_info_dict[key] = value
 
 
def get_value(key):
    # 获得一个全局变量,不存在则提示读取对应变量失败
    try:
        return _user_info_dict[key]
    except:
        print('读取' + key + '失败\r\n')
  • 在每个使用跨文件全局变量的py文件里,都导入上面的 userInfo 模块

import userInfo 

  • 在自己主程序模块里,先 初始化userInfo 模块一次 :userInfo ._init(),注意只需初始化一次,再次初始化会将已配置的全局变量清空

# 初始化gol模块,只需要在主程序模块初始一次
userInfo._init()

  • 在登录的时候设置和更新userInfo的内容:

import userInfo

# 新建或者重置跨文件全局变量:userInfo.set_value(变量名, 变量值)
userInfo.set_value('username', 'username')

  • 在需要的时候获取对应的信息:

import userInfo

# 获得某个全局变量的值: userInfo.get_value(变量名)
username = userInfo.get_value('username')