import os                                                                 # 导入python自带库的模块
import sys # 导入python自带库的模块
import getpass # 导入python自带库的模块
lock_file = 'E:account_lock.txt' # 定义是否锁定状态的变量
user_file = 'E:account.txt' # 定义账号密码变量文件
u = 0 # 循环初始化
while u < 3:
name = input("请输入用户名:") # 用input 给name赋值
lock_file = open('E:account_lock.txt','r+') # 打开锁定文件,权限是读取更新
lock_list = lock_file.readlines()
for lock_line in lock_list:
lock_line = lock_line.strip('\n') # 使用.strip()的方法去点换行符
if name == lock_line:
print('用户 %s 已经锁定,请联系您的系统管理员' % name)
sys.exit(1)
user_file = open('E:account.txt','r') # 打开account文件,权限是读取更新
user_list = user_file.readlines() # 使用.readlines的方法逐行读取account文件
for user_line in user_list: # 使用for循环读取account的内容
(user,passwd) = user_line.strip('\n').split() # 用户名密码输入次数超过3次的用户添加到account_lock文件中
if name == user:
j = 0
while j < 3:
password= getpass.getpass('请输入密码')
if password == passwd:
print('欢迎登录管理平台,用户%s' %name)
sys.exit(0)
else:
if j != 2:
print('用户%s密码错误,请重新输入,还有%d次机会'%(name,2 -j))
j += 1
else:
lock_file.write(name + '\n')
sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name)
else:
pass
else:
if u != 2: #i=2时,是最后一次机会,不用在提示还剩余0次机会了
print('用户%s 不存在,请重新输入,还有%d 次机会' %(name,2 - u))
u += 1
else:
sys.exit('因为您的错误输入,程序已经退出,请重新运行')
lock_file.close()
user_file.close()

python 3.x 循环读取文件用户登录的更多相关文章

  1. python 按每行读取文件怎么去掉换行符

    python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...

  2. Halcon中循环读取文件的实现以及数字与字符的转换

    在循环读取文件的位置时,常用到数字与字符的转换. 数字与字符的转换 将字符转换为数字 tuple_number(StringImageIndex,IntImageIndex)` 1 2 1 2 将数字 ...

  3. python入门:最基本的用户登录

    #! usr/bin/env python # -*- coding: utf-8 -*- #最基本的用户登录 import getpass usre = input("username:& ...

  4. 循环读取文件夹中的图片matlab代码

    参考:http://blog.csdn.net/guoxiaojie_415/article/details/21317323:http://blog.csdn.net/qikaihuting/art ...

  5. Day16_95_IO_循环读取文件字节流read()方法(四)

    循环读取文件字节流read()方法(四) 使用 int read(byte[] bytes) 循环读取字节流数据 import java.io.FileInputStream; import java ...

  6. Day16_94_IO_循环读取文件字节流read()方法(二)

    循环读取文件字节流read()方法 通过read()循环读取数据,但是read()每次都只能读取一个字节,频繁读取磁盘对磁盘有伤害,且效率低. import java.io.FileInputStre ...

  7. python numpy实现多次循环读取文件 等间隔过滤数据

    numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样 如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加 ...

  8. python入门:最基本的用户登录用户登录,三次错误机会

    #!/usr/bin/env python # -*- coding:utf-8 -*- #用户登录,三次错误机会 """ 导入getpass,给x赋值为1,while真 ...

  9. Matlab如何循环读取文件

    循环读取图片第一种方法①List =dir('*.jpg'); %如需其它图片格式支持,可以自己[重载dir()]函数,实现查找所有图片文件的功能,%如果图片是其它路径,可以用 ["路径&q ...

随机推荐

  1. Vue 框架-11-介绍src文件流程及根组件app+HBuilder 配置

    Vue 框架-11-介绍src文件流程及根组件app+HBuilder 配置 这是上一篇对目录简单介绍: 关于编辑器,可以使用轻量级的 Sublime Text 3,我使用的是 HBuilder, 但 ...

  2. iPhone越狱cydia源大全

    越狱后如何添加cydia源及cydia源大全,希望对大家能有所帮助! 工具/原料 cydia 步骤/方法 越狱后添加cydia源 进入Cydia管理中找到软件源,先添加源. 进入“软件源”之后点击右上 ...

  3. vmware centos 安装

    一.分区 一块硬盘主分区+扩展分区最多只能有4个,其中扩展分区最多只能有1个.扩展分区不能写入数据,只能包含逻辑分区.这些都不是linux的限制,而是硬盘结构的限制. 分区号 第一种分区法: |--- ...

  4. 【Java】得到本机IP

    import java.net.InetAddress; import java.net.UnknownHostException; public class MainProcess { public ...

  5. 6.HTML速查模块

    1.HTML 基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </hea ...

  6. git repo代码部署策略及工具

    一般在项目或者产品开发流程中,先是开发人员在本地做好开发及测试,其中可能包含很多用于测试用的目录以及源代码文件,在部署前往往会有一个build过程.web项目最终build产生出优化生产环境下减少ht ...

  7. swift如何打印对象的地址

    swift如何打印对象的地址 打印对象的地址还是有着很多实用价值的,在swift中,你可以用以下的方式打印一个对象的地址: 打印结果: 有时候,if let a = b 这种操作会给人一种错觉,认为 ...

  8. 使用YXHUD

    使用YXHUD 这是本人自己设计的一个类,但功能很不完善,先看看效果: 源码: YXHUD.h 与 YXHUD.m // // YXHUD.h // UILabel // // Created by ...

  9. sonarQube环境搭建--常见问题及解决

    环境配置:MySQL Server 5.7     Jdk1.8 1.安装mysql数据库(默认安装一路默认到底,注意不要先新建用户账号) a) Mysql 环境变量配置: b)新增my.ini文件: ...

  10. Linux rpm命令详解

    rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM ...