文档章节

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

满满李
 满满李
发布于 2016/02/16 23:26
字数 290
阅读 88
收藏 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
杭州
运维
私信 提问
女神节▍教你用Python撩妹:微信推送天气早报/睡前故事/精美图片

女神节 首先,谨代表我自己以及剩下的1,2,3,4,5,6,7……个光棍程序员向今日所有过节的小姐姐们道一声“节日快乐,女王大人”。 女神节,当然也要送小姐姐们礼物了,谁叫咱是程序员,直男,纯...

36大数据
03/08
0
0
shell与python判断文件是否存在

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

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

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

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

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

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

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

蜗牛学院
2018/04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js—String的一些方法

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> var str="Hello boy" /** * 在底......

zhengzhixiang
16分钟前
3
0
vSphere ESXi 主机上的3种VLAN设置

VLAN - Virtual Local Area Network,虚拟局域网,能便捷地组建一个网络分组,并能提供诸多好处。VMware vSphere ESXi主机上,也可以在个层次上通过设置VLAN标签地形式来组建VLAN。从划分的层...

大别阿郎
37分钟前
5
0
elasticsearch 6.x的基本dsl语句

本文使用的谷歌浏览器插件sense,链接如下sense插件(兼容es6.x版本) 查看集群状态 http://106.12.27.130:9200/_cat/health?v 绿色-一切都很好(集群功能齐全) 黄色——所有的数据都是可用...

长恭
51分钟前
12
0
移动端的弹窗滚动禁止body滚动

本文转载于:专业的前端网站➼移动端的弹窗滚动禁止body滚动 前言 最近一个需求是弹窗展示列表,显然是需要一个滚动条的,而滚动到底部就会穿透到body滚动,而阻止默认行为是不行的,这样两个...

前端老手
今天
18
0
设计模式 建造者模式和模板方法模式扩展篇

建造者模式和模板方法模式扩展篇 UML 与抽象工厂模式比较 本模式可以看出与抽象工厂非常类似,都是产生不同的产品,怎么区分这两种设计的使用场景呢 - 建造者模式关注的是基本方法的调...

木本本
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部