文件处理

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'))
原文地址:https://www.cnblogs.com/avery-w/p/14192981.html