文档章节

每日一题.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环境有了,IDE打开了...然而....

ngle
08/02
0
0
python资料全集

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

d_watson
2016/04/15
175
0
做一个运行Python文件的Atom插件

最近在学习Python,自然也安装了Atom编辑器的一些Python插件。有一个插件名字叫做atom-python-run,作用很简单,就是按F5运行当前Python文件。不过这个插件有一个问题,就是只能在Windows平台...

过了即是客
2017/04/18
0
0
Eric:Python的IDE之eric的简介、安装、使用方法之详细攻略——Jason Niu

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

qq_41185868
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
32分钟前
47
0
what f,,

anlve
今天
2
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
11
0
现场看路演了!

HiBlock
昨天
20
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部