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(对象,文件,[使用协议]) 作用:将要持久化的数据“对象”,保存到“文件中” ...
随机推荐
- [Java Collection]List分组之简单应用.
前言 今天有一个新需求, 是对一个List进行分组, 于是便百度到一些可用的代码以及我们项目使用的一些tools, 在这里总结下方便以后查阅. 一: 需求 现在我们一个数据库表t_series_val ...
- iOS 关于PCH文件(全局文件)的介绍
1.pch文件是什么 pch文件即 扩展名为.pch的预编译文件.是将工程中较稳定的不会经常修改的代码预先编译好,放在一个公共的文件(.pch)里. 2.pch 文件的作用 A.存放宏. 比如 #d ...
- 解析大型.NET ERP系统 多国语言实现
实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字..NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 ...
- 解析大型.NET ERP系统 数据审计功能
数据审计,英语表达是Audit,是追踪数据变化的过程,记录数据变化前后的值,供参考分析.通过设置,ERP可以追踪一个表的所有字段的变化,也可以只记录指定的字段的值变化.欧美企业每年都有独立的审计部门, ...
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- MVC5 网站开发之七 用户功能 2 用户添加和浏览
目录 MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网站开发之五 展示层架 ...
- 用原始方法解析复杂字符串,json一定要用JsonMapper么?
经常采集数据,肯定会碰到解析字符串,包括整个页面的html,或者json以及一些不标准的json格式... 以前用json序列化,有时候需要实体类,有的时候没有,比较麻烦,听说可以用JsonMappe ...
- iOS引入JavaScriptCore引擎框架(二)
为何放弃第一种方案 UIWebView的JSContext获取 上篇中,我们通过简单的kvc获取UIWebVIew的JSContext,但是实际上,apple并未给开发者提供访问UIWebVi ...
- 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据
感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...
- NSIS 打包脚本基础
简介 NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序.它提供了安装.卸载.系统设置.文件解压缩等功能.这如其名字所 ...