zoukankan      html  css  js  c++  java
  • 文件处理

    1. 编写文件copy工具

    ori_file=input('原文件路径:').strip()
    cop_file=input('新文件路径:').strip()
    with open(r'{}'.format(ori_file), mode='rt', encoding='utf-8') as f1,
        open(r'{}'.format(cop_file),mode='wt',encoding='utf-8') as f2:
        res = f1.read()
        f2.write(res)

    2. 编写登录程序,账号密码来自于文件

    print('欢迎来到登录界面'.center(50,'*'))
    acc = input('请输入账号:').strip()
    pwd = input('请输入密码:').strip()
    with open(r'account.txt',mode='rt',encoding='utf-8') as f1:
        for line in f1:
            account,password=line.strip().split(':')
            if acc in account and pwd in password:
                print('登录成功')
                break
        else:
            print('登陆失败')
    print('欢迎下次光临'.center(50,'*'))

    3. 编写注册程序,账号密码来存入文件

    print('欢迎来到注册界面'.center(50, '*'))
    acc = input('请输入注册账号:').strip()
    pwd = input('请输入注册密码:').strip()
    with open(r'account.txt', mode='at', encoding='utf-8') as f1:
        f1.write('{}:{}
    '.format(acc, pwd))

    4. 编写用户登录接口

    '''1.输入账号密码完成验证,验证通过后输出"登录成功"
    2.可以登录不同的用户
    3.同一账号输错三次锁定,(提示:锁定的用户存入文件中,这样才能保证程序关闭后,该用户仍然被锁定)
    4.可以选择退出、注册、登录'''
    
    print('操作界面'.center(50, '='), end=' ')
    info = '''
    请选择以下操作:
    1. 注册
    2. 登录
    0. 退出
    '''
    print(info)
    done = True
    while done:  # 判断用户即将想要进行的操作
        operate = input('输入序号选择您需要的操作:')
        operate.strip()
        if operate == '1':  # 注册
            register = True
            while register:
                # while register:
                account_register = input('请输入您注册的账号')
                account_register.strip()
                password_register = input('请输入您注册的密码')
                password_register.strip()
                with open(r'account.txt', mode='rt', encoding='utf-8') as f1:
                    for line in f1:
                        account, password = line.strip().split(':')
                        if account_register == account:
                            print('账户已存在,请重新输入')
                            break
                    else:
                        with open(r'account.txt', mode='at', encoding='utf-8') as f2:
                            f2.write('
    {}:{}'.format(account_register, password_register))
                            print('注册成功')
                            register = False
        elif operate == '2':  # 登录
            n = 3
            account_login = input('账号:')
            account_login.strip()
            while n > 0:  # 可输入三次密码
                password_login = input('密码:')
                password_login.strip()
                with open(r'close.txt', mode='rt', encoding='utf-8') as f5:  #判断账号是否在黑名单中
                    for line in f5:
                        account_close = line.strip()
                        if account_login == account_close:
                            print('该账号已锁定,请重新输入')
                            continue
                with open(r'account.txt', mode='rt', encoding='utf-8') as f3:  # 判断账号是否正确
                    n -= 1
                    for line in f3:
                        account, password = line.strip().split(':')
    
                        if account == account_login and password == password_login:
                            print('登录成功')
                            print('给老子跳段舞吧')
                            # pass
                            exit()
                        elif n == 0:  # 账号错误三次被锁定
                            print('该账号已连续输入错误三次,已被锁定')
                            with open(r'close.txt',mode='at',encoding='utf-8') as f4:
                                f4.write('{}
    '.format(account_login))
                            break
                    else:
                        print('账号密码错误,请重新输入')
        else:  # 选择其他符号,直接退出程序
            print('程序即将退出')
            print('拜拜,小傻子'.center(50, '='))
            exit()

     5. 通用文件copy工具实现

    with open(r'a.txt', mode='rb') as f1,
        open(r'b.txt', mode='wb') as f2:
        res = f1.read()
        f2.write(res)

    6. 基于seek控制指针移动,测试r+、w+、a+模式下的读写内容

    with open(r'a.txt',mode='r+t',encoding='utf-8') as f1:
        print(f1.read())
        f1.seek(5,0)
        print(f1.tell())
        f1.write('asd')
        f1.seek(0,0)
        print(f1.read())
    with open(r'b.txt',mode='w+t',encoding='utf-8') as f2:
        print(f2.read())
        f2.seek(10,0)
        print(f2.tell())
        f2.write('asd')
        f2.seek(0,0)
        print(f2.read())
    with open(r'c.txt',mode='a+t',encoding='utf-8') as f3:
        print(f3.read())
        f3.seek(5,0)
        print(f3.tell())
        f3.write('asd')
        f3.seek(0,0)
        print(f3.read())

    7. tail -f access.log程序实现

    tag = True
    while tag:
        print('输入任意文字可添加至日志,输入readlog可读取日志信息')
        cmd = input('请输入指令:').strip()
        if cmd == 'readlog':
            with open(r'a.txt', mode='a+b') as f1:
                f1.write(bytes("
    {}".format(cmd), encoding='utf-8'))
                f1.seek(0, 0)
                res = f1.read().decode('utf-8')
                print(res)
        else:
            with open(r'a.txt', mode='ab') as f2:
                f2.write(bytes('
    {}'.format(cmd), encoding='utf-8'))
  • 相关阅读:
    Quartz 基本概念及原理
    quartz-2.2.x 快速入门 (1)
    hive踩过的小坑
    spring profile 多环境配置管理
    win10窗口设置眼睛保护色
    优雅地在markdown插入图片
    Using Spring Boot without the parent POM
    isDebugEnabled作用
    Log 日志级别
    为什么要使用SLF4J而不是Log4J
  • 原文地址:https://www.cnblogs.com/avery-w/p/14192981.html
Copyright © 2011-2022 走看看