zoukankan      html  css  js  c++  java
  • python 3次登录

     1 #!/usr/bin/env python
     2 #-*- encoding: utf-8 -*-
     3 
     4 import sys
     5 import os
     6 import getpass
     7 import platform
     8 
     9 
    10 # 全局变量
    11 retry_limit = 3        # 登录重试次数
    12 retry_count = 0        # 计数器
    13 
    14 account_file = 'account.txt'
    15 lock_file = 'account_lock.txt'
    16 
    17 def lock(user):
    18     lock_check = open(lock_file, 'r')        # 打开account_lock.txt,检查用户是否已经存在文件中
    19 
    20     for line in lock_check.readlines():    # 循环读取文件内容
    21         if user == line.strip('
    '):        # 去掉指定字符,并且判断是用户名是否和文件中的文件名一致
    22             sys.exit('33[35mUser %s is locked!!!33[0m' % user)    # 存在则直接退出并打印输出提示
    23 
    24     lock_check.close()        # 关闭打开的文件流
    25     
    26 
    27 def login(user, passwd):
    28     global retry_count        # 函数内要改变全局变量的值 "retry_count += 1",需要加上global 关键字
    29 
    30     file = open(account_file, 'r')
    31     match_flag = False
    32 
    33     for line in file.readlines():
    34         username, password = line.strip('
    ').split()
    35 
    36         if user == username and passwd == password:
    37             print 'hello, %s !!' % username
    38             match_flag = True
    39             break
    40 
    41     file.close()
    42 
    43     if match_flag == False:
    44         print 'sorry,%s is unmatched' % username
    45         retry_count += 1
    46     else:
    47         print 'wlecome login my learning system!'
    48         sys.exit(0)
    49 
    50 
    51 def main():
    52 
    53     # 清屏操作,判断当前运行环境在什么平台下
    54     if platform.system() != 'Windows':
    55         os.system('clear')
    56     else:
    57         os.system('cls')
    58 
    59 
    60     while retry_count < retry_limit:
    61         username = raw_input('username: ')
    62         lock(username)
    63         password = getpass.getpass('password: ')    # 用getpass模块中的getpass方法来实现输入密码时和Linux一样
    64         login(username, password)
    65     else:
    66         print "you account %s is locked!!!" % username
    67         g = open(lock_file,'a')
    68         g.write(username)
    69         g.write('
    ')
    70         g.close()
    71 
    72 if __name__ == '__main__':
    73     main()
    74     
    75 
    76     
  • 相关阅读:
    I2C调试
    linux读取cpu温度
    看react全家桶+adtd有感
    react学习1(搭建脚手架,配置less,按需引入antd等)
    去掉console.log,正式环境不能有console.log
    Vue的minix
    数组去重我总结的最常用的方法,其他不常用就不写了
    inline-block bug解决方法
    vue中使用less/scss(这是2.0 3.0就不需要手动配置了只需要安装依赖就行了)
    Vue 调用微信扫一扫功能
  • 原文地址:https://www.cnblogs.com/augustyang/p/6201203.html
Copyright © 2011-2022 走看看