python基础之ATM-3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础之ATM-3相关的知识,希望对你有一定的参考价值。
import json
import os
import sys
import time
import accounts
import db_handler
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from conf import settings
import accounts
import logger
‘‘‘
本模块是auth,用户认证,其中装饰器是检验账户是否冻结
‘‘‘
def lock_judge(func):
‘‘‘
该方法实现判断账户是否被冻结
:param func: 入参方法
:return:
‘‘‘
def lock_account(user_data):
print(user_data)
func(user_data)
acc_account = accounts.load(user_data["account_data"]["account"])
if acc_account["status"] == "lock":
exit("该账户已被冻结")
return user_data
return lock_account
def acc_auth(account,password):
‘‘‘
该模块实现判断用户登陆信息
:param account: 信用卡账户
:param password: 信用卡密码
:return: 返回用户信息
‘‘‘
db_path = db_handler.db_handler(settings.DATABASE)
db_file = "%s\%s.json"%(db_path,account)
if os.path.isfile(db_file):
with open(db_file) as f:
account_data = json.load(f)
if account_data["pass"] == password:
exp_time_stamp = time.mktime(time.strptime(account_data["engine"],"%Y-%m-%d"))
if time.time() > exp_time_stamp:
print("账户%s已失效,请更换卡片"%account)
else:
return account_data
@lock_judge
def acc_login(user_data):
‘‘‘
该函数是用于用户输入用户名,密码,调用认证函数,认证成功后设置用户登陆状态数据
:param user_data:
:return user_data
‘‘‘
count = 0
while user_data["is_auth"] is False and count < 3:
account = input("请输入信用卡账号 >>>")
password = input("请输入信用卡密码 >>>")
auth = acc_auth(account,password)
if auth:
user_data["is_auth"] = True
user_data["account_id"] = account
user_data["account_data"] = auth
info = "%s登陆了信用卡中心" % account
logger.write_logger(settings.logfile1, info)
return user_data
count += 1
以上是关于python基础之ATM-3的主要内容,如果未能解决你的问题,请参考以下文章