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     
  • 相关阅读:
    Java 进程占用内存过多,幕后元凶原来是线程太多
    领域驱动设计系列文章(3)——有选择性的使用领域驱动设计
    领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力
    RabbitMQ
    Redis与Memcached的区别
    memcached源码分析-----slab内存分配器
    C# Finalize和Dispose的区别
    [IoC容器Unity]第四回:使用范例
    [IoC容器Unity]第三回:依赖注入
    [IoC容器Unity]第二回:Lifetime Managers生命周期
  • 原文地址:https://www.cnblogs.com/augustyang/p/6201203.html
Copyright © 2011-2022 走看看