文档章节

每日一题.PYTHON编写简单登录接口?

满满李
 满满李
发布于 2016/02/16 23:26
字数 290
阅读 81
收藏 2

原文数据:

user_db.txt


root:root_admin

admin:admin_root

lock_db.txt

admin

具体要求:

1.输入用户名密码

2.认证成功后显示欢迎消息

3.输错三次后锁定账户

文件结构:

代码流程:

代码实现:

main.py

# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# OsChina: http://my.oschina.net/pydevops/
# Purpose:
#
"""
import sys
import linecache


def main():
    """Main function."""

    user_db = 'user_db.txt'
    lock_db = 'lock_db.txt'

    retry_count = 0
    # 判断三次输入的账户名是不是同一个用户,如果是并且不存在锁定文件中则锁定
    lock_db_set = set()
    while retry_count < 3:
        login_name = raw_input('please input login_user: ').strip()
        if len(login_name) == 0:
            continue
        lock_db_cache = linecache.getlines(lock_db)
        if ''.join([login_name, '\n']) in lock_db_cache:
            print 'Found Errors: your accound is limited login, try again later!'
            break

        lock_db_set.add(login_name)

        user_db_cache = linecache.getlines(user_db)
        login_pass = raw_input('please input login_pass: ').strip()
        if len(login_pass) == 0:
            continue
        if ''.join([login_name, ':', login_pass, '\n']) in user_db_cache:
            print 'Found Notice: welcome to login!'
            break
        else:
            print 'Found Errors: user name or pass wrong!'

        retry_count += 1
        # 防止程序运行中文件被篡改
        linecache.updatecache(user_db)
        linecache.updatecache(lock_db)
    else:
        # 判断三次输入的是否是同一个用户名
        if len(lock_db_set) == 1:
            print 'Found Notice: your accound is locked, contract admin unlock!'
            # 加入缓存,此时不需加\n换行,下次读取会自动添加
            lock_db_cache.append(login_name)
            with file(lock_db, 'w+b') as whandle:
                whandle.writelines(lock_db_cache)

if __name__ == '__main__':
    main()

© 著作权归作者所有

共有 人打赏支持
满满李
粉丝 20
博文 156
码字总数 101605
作品 0
杭州
运维
shell与python判断文件是否存在

  日常运维中,我们会存在每日备份的现象,针对这一种情况可能会要求监控文件是否存在。比较笨拙的方法就是登录上服务器到某个路径下查看文件是否存在,除此之外,我们可以利用shell或者p...

南部小城y
08/06
0
0
python资料全集

python: 微信公众号开发小记——2.80端口上的服务 python: 微信公众号开发小记——3.接入三方登录 使用python编写一个壁纸网站的简单爬虫 python: python List 用法 Python 中各个时间复杂度...

d_watson
2016/04/15
175
0
每天叫醒你的不是闹钟,而是“爱词霸每日一句”——Python实现将每日一句定时推送至微信

前言 前几天在网上看到一篇文章《教你用微信每天给女票说晚安》,感觉很神奇的样子,随后研究了一下,构思的确是巧妙。好,那就开始动工吧!服务器有了,Python环境有了,IDE打开了...然而....

ngle
08/02
0
0
Eric:Python的IDE之eric的简介、安装、使用方法之详细攻略——Jason Niu

Eric的简介 Eric是一个完整的Python编辑器和IDE,用Python编写。它是基于跨平台QT-UI工具包,集成了高度灵活的闪烁编辑器控件。它被设计成可用作为“每日”的快速和肮脏的编辑器,以及作为一...

qq_41185868
05/24
0
0
筒子们,免费学习《Python自动化测试开发实践》课啦,请接住~

经常会有人问: 蛋哥,最近有没有什么免费的技术课啊? 蛋哥,最近有什么关于Python的课程么? 蛋哥,最近有没有测试的直播课额? 蛋哥,…… 应广大群众的强烈呼唤,为了让大家尽可能多的学...

蜗牛学院
04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

InvalidKeyException: Illegal key size

Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size 解决方案:去官方下载JCE无限制权限策略文件。 jdk 5: http://www.oracle.com/technetwork/j......

自由的开源
12分钟前
0
0
JAVA秒杀实现以及优化原理

秒杀与其他业务最大的区别在于:秒杀的瞬间, (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大。 关于(2),最常用的办法就是做页面静态化,也就是常说的前后端分...

小贱是个程序员
16分钟前
1
0
Spring Aop之Advisor解析

在上文Spring Aop之Target Source详解中,我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到,Spring Aop对目标bean进行代理是通过Ann...

爱宝贝丶
18分钟前
0
0
Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点

前言: 分享 Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点,文章有点长,但比较全面,阅读时间15分钟左右,干货满满。 一、HashMap的那些事 1.1、HashMap的实现原理 1.1.1、...

Java大蜗牛
43分钟前
2
0
nginx模块学习五 expires 浏览器缓存

缓存原理 语法 Syntax: expires [modified] time;expires epoch | max | off;Default: expires off;Context: http,server,location,if in location 例/etc/nginx/conf.d/default.con......

Romanceling
54分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部