day08作业

1、用文件处理的知识实现拷贝文件的操作

with open(r"1.png", "rb") as f:
    data = f.read()
with open(r"2.png", "wb") as f:
    f.write(data)

# 上面的代码写的并不好, 并没有指定让用户输入拷贝的路径,把程序写死了,且如果拷贝的是一个大文件, 读取到内存会瞬间让内存爆满,于是有了以下写法

src_file = input("请输入源文件路径: ").strip()
dst_file = input("请输入目标文件路径: ").strip()
with open(r"%s" %src_file, "rb") as read_file, open(r"%s" %dst_file, "wb") as write_file:
    print("正在拷贝...")
    for line in read_file:
        write_file.write(line)
    print("拷贝成功...")
文件拷贝

2、实现用户注册功能

思路:
  用户输入用户名、密码
  将用户输入的内容按照固定的格式,比如:egon:123,存入文件
  可以往一个文件中重复注册新的用户名和密码
附加:
  1)对输入的用户名进行合法性监测,不能以数字开头,且如果输入的用户名已存在于文件中则要求用户重新输入
  2)对输入的密码进行合法性监测,密码的长度至少6位,并且不能包含特殊字符

count = 0
while count < 3:
    username = input("请输入注册用户名: ").strip()
    password = input("请输入密码: ").strip()

    f2 = open("db1.txt", "r", encoding="utf-8")
    data = f2.readline().strip().split(":")
    f2.close()
    if username == data[0]:
        print("用户名已注册")
    elif username[0].isdigit():
        print("用户名不合法, 不能以数字开头")
    elif len(password) < 6 or not password.isalnum():
        print("密码不能少于6位且不能使用特殊字符")
    else:
        f1 = open("db1.txt", "a", encoding="utf-8")
        info = "%s:%s\n" % (username, password)
        f1.write(info)
        f1.close()
        count += 1
用户注册

3、实现用户验证功能

思路:
  用户输入账号密码,从文件中读出账号密码,与用户输入的进行比对
  附加:新建黑名单文件,同一个账号名输错三次则将用户名写入黑名单文件中,如果用户输入的用户名存在于黑名单中则直接退出

login_authentication = False
login_num = 3
# 取锁定名单
lock_file = open('lock.txt', 'r', encoding='utf-8')
lock_list = lock_file.read()
lock_file.close()

# 首次输入用户
user_name = input('请输入用户名: ')

# 循环判断用户密码
user_file = open("db.txt", "r", encoding="utf-8")
for line in user_file:
    user_info = line.strip().split(":")
    if user_name == user_info[0]:
        # 判断是否在锁定名单
        if user_name in lock_list:
            print('该用户已被锁定!')
            break
        # 验证用户密码,重新输入的密码在限制次数内
        user_pass = input('请输入密码: ')
        for i in range(login_num - 1):
            if user_pass == user_info[1]:
                print('登录成功')
                # 标志位验证登录结果及跳出多层循环
                login_authentication = True
                break
            else:
                login_num = login_num - 1
                print('密码错误,您还有 %s 次输入密码的机会' %(login_num))
                user_pass = input('请重新输入密码: ')
        else:
            print('超过三次,用户已锁定!')
            lock_file = open('lock.txt', 'a', encoding='utf-8')
            lock_list = lock_file.write("%s\n" %user_name)
            lock_file.close()
            break
    # 判断跳出一级循环
    if login_authentication:
        break
else:
    print('没有此用户')
user_file.close()
# 登录成功,进入下一级页面
if login_authentication:
    print('{user}, 欢迎你'.format(user=user_name))
用户登录验证

猜你喜欢

转载自www.cnblogs.com/qiuxirufeng/p/9681739.html