day1
Posted Felix运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day1相关的知识,希望对你有一定的参考价值。
day1.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#user:Felix
#date:2016-10-11
#mail:wudonghang@wudonghang.com
#If you have questions or suggestions, please contact the author.
import getpass
import os
import json
#退出程序用,后续会重复调用。
def end():
print(\'\\nProgram is over!\')
exit()
#判断是否有用户文件
def file_exists():
if os.path.exists(userlist):
pass
else:
print(\'User list file not defined!\')
end() #没有检测到用户文件,
#判断用户是否存在文件中
def user_exists():
if username not in userlist_message:
print(\'User name does not exist in the system!\')
end()
#开始登陆流程
userlist = \'userlist\'
file_exists()
username = input("Please input your username:")
with open(userlist, \'r\') as userlist_json: #将文件内容读取出来
userlist_message = json.load(userlist_json) #转换json
user_exists()
#判断用户名密码是否正确,输入正确显示welcome+用户名,输入不正确3次后将跳出循环并锁定该用户。
real_password = userlist_message[username][0][\'password\'] #根据用户输入username取出json中的password
if int(userlist_message[username][0][\'lock\']) == 0:
print(\'Your user has been locked, please contact the administrator to unlock.!\')
end()
elif int(userlist_message[username][0][\'lock\']) == 1:
pass
else:
print(\'Your user status is abnormal, please contact the administrator!\')
end()
password = getpass.getpass(prompt=\'please input your password: \') #输入密码
for count in range(3):
if username == username in userlist_message and password == real_password:
print("Welcome! %s"%username)
end()
elif count == 2:
print(\'Sorry, your user name has been locked, temporarily not allowed to use!\')
userlist_message[username][0][\'lock\'] = 0
json.dump(userlist_message, open(userlist, \'w\'))
break #输错次数到3次跳出循环,并加入黑名单
else:
print("wrong username or password!") #提示密码输入错误
password = getpass.getpass(prompt=\'Please enter your password again: \') #重新输入一次密码
end()
userlist:
{"huangxu": [{"password": "huangxu123", "lock": 1}], "liuyao": [{"password": "liuyao123", "lock": 1}], "wudonghang": [{"password": "wudonghang123", "lock": 1}], "administrator": [{"password": "administrator123", "lock": 1}]}
readme:
###博客园地址:[Python之路,Day1 - Python基础1](http://www.cnblogs.com/wudonghang/p/d40bdbbd1a87e6c907ac76f8c6f4c024.html "我的博客园地址")
***
###程序简介:
>背景
[作业:](http://www.cnblogs.com/alex3714/articles/5465198.html#3519330 "大王留下的作业")
* 编写登陆接口
* 输入用户名密码
* 认证成功后显示欢迎信息
* 输错三次后锁定
***
>构想流程图
![](http://i.imgur.com/DYvmgC2.png)
***
>实现方式
1. 用户数据文件形式采用了json形式 (lock值为0时,用户为锁定状态)
json格式如下
{
"wudonghang": [
{
"password": "wudonghang123",
"lock": 0
}
],
"administrator": [
{
"password": "administrator123",
"lock": 1
}
]
}
2. 查询json文件数据方法
with open(userlist, \'r\') as userlist_json:
userlist_message = json.load(userlist_json)
real_password = userlist_message[username][0][\'password\'] #查询文件中password
real_lock = userlist_message[username][0][\'lock\'] #查询用户锁定状态
3. 采集username以及password方法
input("Please input your username:") #输入用户名
getpass.getpass(prompt=\'Please enter your password again: \') #这里我采用了getpass模块
4. 利用for循环与if判断来实现对username和password的判断,以及用户lock值的修改
for count in range(3):
if username == username in userlist_message and password == real_password:
print("Welcome! %s"%username)
end() #登陆成功跳出程序
elif count == 2:
print(\'Sorry, your user name has been locked, temporarily not allowed to use!\')
userlist_message[username][0][\'lock\'] = 0
json.dump(userlist_message, open(userlist, \'w\'))
break #输错次数到3次跳出循环,并加入黑名单
else:
print("wrong username or password!") #提示密码输入错误
password = getpass.getpass(prompt=\'Please enter your password again: \') #重新输入一次密码
***
以上是关于day1的主要内容,如果未能解决你的问题,请参考以下文章