• python基础学习-day11==课后作业练习(文件操作)


    # 一、今日作业
    # 1、编写文件copy工具
    #方法一:不带文件名
    src_file = input('原文件路径:').strip()
    dst_file = input('新文件路径:').strip()
    with open(r'{}'.format(src_file),mode='rt',encoding='utf-8') as f1,
        open(r'{}'.format(dst_file),mode='wt',encoding='utf-8') as f2:
        res = f1.read()
        f2.write(res)
    
    #方法二:带复件文件名
    # 执行思路:
    # 原文件的名字
    file_name="1.txt"
    # 1、根据原文件名生成拷贝后的文件名->1[复件].txt
    #split:根据点进行分割
    #rpartition:根据点进行分割成三部分(一般用这个进行文件名的分割)
    new_file_name,point,end_str=file_name.rpartition(".")#以点进行分割成三部分,把数据分别存放
    print(new_file_name)#点之前的部分
    print(point)#
    print(end_str)#点之后的部分
    #将生成好的进行重新的拼接
    dst_file_name=new_file_name+"[复件]"+point+end_str#生成的新的目标文件名
    print(dst_file_name)#新的目标文件名 1[复件].txt
    
    # 2、打开目标文件(拷贝后的文件),以wb模式打开
    #提示:使用wb模式的原因,以后不仅可以拷贝文本文件,还可以拷贝视频等二进制文件
    dst_file=open(dst_file_name,"wb")
    file=open(file_name,"rb")#将原文件打开
    
    # 3、读取原文件中的数据
    file_data=file.read()
    # 4、将原文件的数据写入到目标文件里面
    dst_file.write(file_data)
    # 5、关闭这两个文件
    dst_file.close()
    file.close()


    # 2、编写登录程序,账号密码来自于文件
    user_name = input("请输入用户名:")
    psd = input("请输入密码:")
    with open("user.txt",mode="r",encoding="utf-8") as f :
        for line in f:
            username,password = line.strip().split(":")
            if username == user_name and password == psd:
                print("登录成功")
                break
        else:
            print("账号或秘密错误")

    # 3、编写注册程序,账号密码来存入文件
    name = input("请输入用户名:")
    psd = input("请输入密码:")
    with open("user.txt",mode='a',encoding='utf-8') as f:   #追加写入
        f.write(f'{name}:{psd}
    ')
    # 二.周末综合作业:
    #
    # 1.编写用户登录接口
    # ① 输入账号密码完成验证,验证通过后输出"登录成功"
    # ② 可以登录不同的用户
    # ③ 同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)
    count = 0
    while count < 3:
    user = input("请输入用户名:").strip()
    psd = input("请输入密码:")
    #在黑名单文件中取出用户名
    with open("black_name.txt", mode="r", encoding="utf-8") as f:
    for line1 in f:
    blackname = line1.strip()

    #在用户信息中取出用户名和密码
    with open("name.txt", mode="r", encoding="utf-8") as f:
    for line in f:
    username, password = line.strip().split(":")
    # 将用户输入的用户名和用户信息表中的用户名
    if user == username and blackname == username:
    print("该账号已被锁定!!")
    count=3
    break
    #将用户输入的用户名和密码跟用户信息表中的用户名和密码做匹配
    if user == username and password == psd:
    print("登录成功")
    count = 3
    break
    else:
    count += 1
    print('您已输错%s次,还剩%s次' % (count, 3 - count))
    if count==3:
    with open("black_name.txt", mode='wt', encoding='utf-8') as f:
    f.write(f'{user} ')
    print('该账号已被锁定加入黑名单!')

     # 2.2:编写程序实现用户注册后,可以登录,

    # 提示:
    while True:
        msg = """
            0 退出
            1 登录
            2 注册
            """
        print(msg)
        cmd = input('请输入命令编号>>: ').strip()
        if not cmd.isdigit():
            print('必须输入命令编号的数字,傻叉')
            continue
    
        if cmd == '0':
            print("已退出程序!")
            break
        elif cmd == '1':
            # 登录功能代码(附加:可以把之前的循环嵌套,三次输错退出引入过来)
            count = 0
            while count < 3:
                user = input("请输入用户名:")
                psd = input("请输入密码:")
                with open("name.txt", mode="r", encoding="utf-8") as f:
                    for line in f:
                        username, password = line.strip().split(":")
                        if user == username and password == psd:
                            print("登录成功")
                            count=3
                            break
                    else:
                        count += 1
                        print('您已输错%s次,还剩%s次' % (count, 3 - count))
                        if count==3:
                            print('输错3次,退出程序')
    
    
        elif cmd == '2':
          # 注册功能代码
            name = input("请输入用户名:")
            pwd = input("请输入密码:")
            with open("name.txt", mode='a', encoding='utf-8') as f:  # 追加写入
                f.write(f'{name}:{pwd}
    ')
            print("账号注册成功,请输入命令继续操作!")
        else:
            print('输入的命令不存在')
    # 思考:上述这个if分支的功能否使用其他更为优美地方式实现

    扩展:
    3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
    # 扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟
    while True:
        msg = """
            0 退出
            1 登录
            2 注册
            """
        print(msg)
        cmd = input('请输入命令编号>>: ').strip()
        if not cmd.isdigit():
            print('必须输入命令编号的数字,傻叉')
            continue
    
        if cmd == '0':
            print("已退出程序!")
            break
        elif cmd == '1':
            count = 0
            while count < 3:
                user = input("请输入用户名:")
                psd = input("请输入密码:")
                with open("name.txt", mode="r", encoding="utf-8") as f:
                    for line in f:
                        username, password = line.strip().split(":")
                        if user == username and password == psd:
                            print("登录成功!")
                            count=3
                            break
                    else:
                        count += 1
                        print('您已输错%s次,还剩%s次' % (count, 3 - count))
                        if count==3:
                            print("您的账号被锁定5s!!,5s后再继续操作")
                            time.sleep(5)
                            print('改账号已解锁,请重新操作!')
    
        elif cmd == '2':
          # 注册功能代码
            name = input("请输入用户名:")
            psd = input("请输入密码:")
            with open("name.txt", mode='a', encoding='utf-8') as f:  # 追加写入
                f.write(f'{name}:{psd}
    ')
                print("账号注册成功,请输入命令继续操作!")
        else:
            print('输入的命令不存在')
  • 相关阅读:
    RTF文件格式
    javascript 正则表达式基础
    不同线程之间传递数据
    JavaScript trim函数
    Simple Editor
    关于RichTextBox字体的问题
    手机短信自动清理方式
    手机来电显示新方法
    具有二维码自动识别功能的交通标志
    利用手机扫描二维码技术识别房屋租赁信息
  • 原文地址:https://www.cnblogs.com/dingbei/p/12489030.html
Copyright © 2020-2023  润新知