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(对象,文件,[使用协议]) 作用:将要持久化的数据“对象”,保存到“文件中” ...
随机推荐
- CocoaPods 1.1.0上传遇到swift问题
更新时间: 2016-11-25 1.出现如下信息: Conn keep-alive Updating spec repo `master` - Data URL: https://raw.githu ...
- 解决 SpringBoot 没有主清单属性
问题:SpringBoot打包成jar后运行提示没有主清单属性 解决:补全maven中的bulid信息 <plugin> <groupId>org.springframewor ...
- express全局安装后无法通过require使用
今天入门了一下express,首先安装依赖. npm install express -g; npm install body-parser -g; npm install cookie-parser ...
- PHP 面向对象编程和设计模式 (4/5) - 异常的定义、扩展及捕获
PHP高级程序设计 学习笔记 2014.06.12 异常经常被用来处理一些在程序正常执行中遇到的各种类型的错误.比如做数据库链接时,你就要处理数据库连接失败的情况.使用异常可以提高我们程序的容错特性, ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(61)-如何使用框架来开发
系列目录 前言: 有些园友经常问如何正确快速开发,但是我告诉你没有什么帮助文档比自己动手做更加实在,不用代码生成器 这一节专门抽了些时间来非常非常详细演示这个框架的数据流,废话不多说,现在开始!下面看 ...
- python3爬取1024图片
这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...
- Dojo前端开发框架与jQuery前端开发框架,对比分析总结
最近Dojo和jQuery双双发布了最新的1.8版本,有着相同版本号的两个Javascript库也有许多核心的相同之处:相同的资源加载机制AMD.相同的选择器 引擎Sizzle等.作为业界知名的Jav ...
- 【分布式】Zookeeper与Paxos
一.前言 在学习了Paxos在Chubby中的应用后,接下来学习Paxos在开源软件Zookeeper中的应用. 二.Zookeeper Zookeeper是一个开源的分布式协调服务,其设计目标是将那 ...
- ASP.NET Core 中文文档 第二章 指南(4.3)添加 View
原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将 ...
- Wizard Framework:一个自己开发的基于Windows Forms的向导开发框架
最近因项目需要,我自己设计开发了一个基于Windows Forms的向导开发框架,目前我已经将其开源,并发布了一个NuGet安装包.比较囧的一件事是,当我发布了NuGet安装包以后,发现原来已经有一个 ...