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(对象,文件,[使用协议]) 作用:将要持久化的数据“对象”,保存到“文件中” ...
随机推荐
- Oracle ------ SQLDeveloper中SQL语句格式化快捷键
Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...
- 常用js功能函数集合
1.获取随机时间戳 function uniqueId(){ var a=Math.random,b=parseInt; return Number(new Date( ...
- Hyper-V1:创建和管理虚拟机
Hyper-V是微软的管理虚拟机(Virtual Machine)的服务,在安装Hyper-V功能之后,系统自动安装可视化的虚拟机管理工具:Hyper-V Manager.在同一台物理机上,能够使用H ...
- Android自定义View之圆环交替 等待效果
学习了前面两篇的知识,对于本篇实现的效果,相信大家都不会感觉太困难,我要实现的效果是什么样呢?下面请先看效果图: 看上去是不很炫的样子,它的实现上也不是很复杂,重点在与onDraw()方法的绘制. 首 ...
- Reactor by Example--转
原文地址:https://www.infoq.com/articles/reactor-by-example Key takeaways Reactor is a reactive streams l ...
- 【NLP】基于机器学习角度谈谈CRF(三)
基于机器学习角度谈谈CRF 作者:白宁超 2016年8月3日08:39:14 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都 ...
- 【分布式】Zookeeper服务端启动
一.前言 前面已经了解了Zookeeper会话相关知识点,接着来学习Zookeeper服务端相关细节. 二.服务端 服务端整体架构如下 Zookeeper服务器的启动,大致可以分为以下五个步骤 1. ...
- 【Android】 context.getSystemService()浅析
同事在进行code review的时候问到我context中的getSystemService方法在哪实现的,他看到了一个ClipBoardManager来进行剪切板存储数据的工具方法中用到了cont ...
- CentOS7使用firewalld打开关闭防火墙与端口
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disab ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...