python-pickle模块使用实例
以下代码主要实现的是用户登录,注册,密码验证,账户锁定,重置和修改密码等功能
import pickle
#第一次运行请去掉下面一段代码的注释
'''
users_db = open("users.txt","wb")
users_list = [["admin","admin",1],["tiannan","123456",1],["jide","123",0]]
#["admin","admin",1] -> [<用户名>,<密码>,<锁(是/否)>]
pickle.dump(users_list,users_db)
users_db.close()
''' users_db=open("users.txt","rb")
users_list=pickle.load(users_db)
users_db.close()
#print(users_list) #用户登录机会
users_pass = {}
for i in users_list:
users_name = i[0]
users_pass[users_name]=3
#users_pass = {"admin":3,"tiannan":3,"jide":3} -> {<用户名>:<可尝试登录次数>}
#print(users_pass) def ha_user(user_name):
no_user = "yes"
for j, users_msg in enumerate(users_list):
#print(i,users_msg)
#判断用户名是否存在
if user_name in users_msg:
no_user = j
break
return no_user def write_db():
users_db = open("users.txt","wb")
pickle.dump(users_list,users_db)
users_db.close() def change_password():
password1 = input("请输入新密码:")
password2 = input("请再次输入新密码:")
if password1 == password2:
users_list[index][1] = password1
write_db()
print("密码修改成功!")
else:
print("您输入的密码不一致!") while True:
sel = int(input("选择:<1>登录 <2>注册\n"))
if sel == 1:
name = input("请输入用户名:")
password = input("请输入密码:") index = ha_user(name)
if index == "yes":
print("用户名不存在!")
else:
users_info = users_list[index]
#判断用户是否处于锁定状态
if users_info[-1] == 0:
print("%s用户已被锁,请联系管理员解锁账户!" % users_info[0])
else:
if password == users_info[1]:
#重置账户锁定验证次数
users_pass[name]=3
print("登录成功!")
while name == "admin":
sel2 = int(input("请选择:<1>修改密码 <2>重置用户 <3>查看用户 <4>退出\n"))
if sel2 == 1:
change_password()
elif sel2 == 2:
name2 = input("请输入需要重置的用户名:")
index3 = ha_user(name2)
if index3 == "yes":
print("用户名不存在!")
else:
users_list[index3][1]= ""
users_list[index3][-1]= 1
write_db()
print("%s用户重置成功!" % name2)
elif sel2 == 3:
name2 = input("请输入查找的用户名:")
index2 = ha_user(name2)
if index2 != "yes":
print(users_list[index2])
else:
print("该用户不存在!")
elif sel2 == 4:
break
while name != "admin":
sel3 = int(input("请选择:<1>修改密码 <2>退出\n"))
if sel3 == 1:
change_password()
elif sel3 == 2:
break
else:
users_pass[name]-=1
if users_pass[name] > 0:
print("密码错误,你还有%d次机会,请重新登录!" % users_pass[name])
else:
users_list[index][-1]=0
write_db()
print("%s用户多次登录失败,已被锁,请联系管理员解锁账户!" % users_info[0])
elif sel == 2:
name = input("请输入用户名:")
password = input("请输入密码:") result = ha_user(name)
if result == "yes":
user_list = [name,password,1]
users_list.append(user_list)
write_db()
print("注册成功!")
else:
print("该用户名已被注册!")
此代码仅供参考,欢迎各位博友的留言!
python-pickle模块使用实例的更多相关文章
- [转]python pickle模块
持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...
- python pickle 模块的使用
用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,l ...
- Python pickle 模块
转自:https://www.cnblogs.com/lincappu/p/8296078.html pickle可以存储的数据类型 所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串 ...
- python -pickle模块、re模块学习
pickel模块 import pickle #pickle可以将任何数据类型序列化,json只能列表字典字符串数字等简单的数据类型,复杂的不可以 #但是pickle只能在python中使用,json ...
- python——pickle模块的详解
pickle模块详解 该pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议. “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反 ...
- python pickle模块的使用/将python数据对象序列化保存到文件中
# Python 使用pickle/cPickle模块进行数据的序列化 """Python序列化的概念很简单.内存里面有一个数据结构, 你希望将它保存下来,重用,或者发送 ...
- Python pickle模块
python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...
- python pickle模块的用法
pickle用于python特有的类型,和python的数据类型间进行转换,提供四个功能 dumps,dump,loads,load. pickle 的用法 #pickle.dumps 将数据通过特殊 ...
- python pickle 模块的使用详解
用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,l ...
- Python——pickle模块(永久存储)
一.作用 讲字典.列表.字符串等对象进行持久化,存储到磁盘上,方便以后使用. 二.dump()方法 pickle.dump(对象,文件,[使用协议]) 作用:将要持久化的数据“对象”,保存到“文件中” ...
随机推荐
- zookeeper集群搭建
1.由于是第一次搭建zk的集群,过程中遇到些问题,给自己也给遇到问题的人提供一种可能解决问题的方法. 第一步:下载zk的最新版,我下的是3.4.9,在zk的官网,下载后解压到/usr/local ta ...
- Hyper-V1:创建和管理虚拟机
Hyper-V是微软的管理虚拟机(Virtual Machine)的服务,在安装Hyper-V功能之后,系统自动安装可视化的虚拟机管理工具:Hyper-V Manager.在同一台物理机上,能够使用H ...
- ECS Linux 服务器公钥秘钥SSH登录
Ubuntu 14.04.1为例,设置步骤如下: 一. 生成密钥的公钥和私钥 # ssh-keygen -t rsa Generating public/private rsa key pair. E ...
- SQL Server 在缺少文件组的情况下如何还原数据库
SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为 ...
- PHP开发环境的配置
PHP的开发环境主要包括:安装和配置Apache服务器.PHP引擎以及MySQL数据库服务器,另外选用Dreamweaver作为PHP的开发工具. 1.安装和测试Apache 首先下载Apache:官 ...
- 用SignalR 2.0开发客服系统[系列2:实现聊天室]
前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...
- CentOS7使用firewalld打开关闭防火墙与端口
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disab ...
- 代码的坏味道(7)——临时字段(Temporary Field)
坏味道--临时字段(Temporary Field) 特征 临时字段的值只在特定环境下有意义,离开这个环境,它们就什么也不是了. 问题原因 有时你会看到这样的对象:其内某个实例变量仅为某种特定情况而设 ...
- Android手机越用越卡?
一直不懂Android手机为什么会越用越卡,而ios就几乎能一直保持流畅度.后来发现这个锅不该google背,而是国内混乱的Android软件开发商的锅.主要是Android对应用没什么限制,而goo ...
- TFS 2013 培训视频
最近给某企业培训了完整的 TFS 2013 系列课程,一共四天. 下面是该课程的内容安排: 项目管理 建立项目 成员的维护 Backlog 定义 任务拆分 迭代 ...