zoukankan      html  css  js  c++  java
  • python入门作业——文件修改、函数的登录、注册、tail

    题目一:编写文件修改功能

    方法一:文本编辑采用的就是这种方式
    实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
    优点: 在文件修改过程中同一份数据只有一份
    缺点: 会过多地占用内存

    def modify(modify_path, old_content, new_content):
        '''文件修改'''
        with open('{}'.format(modify_path),mode='rt',encoding='utf-8') as f:
            res=f.read()
            data=res.replace(old_content,new_content)
            print(data)
        with open('{}'.format(modify_path),mode='wt',encoding='utf-8') as f1:
            f1.write(data)
    
    
    modify_path = input('输入要修改的文件路径:')
    old_content = input('输入要修改的内容:')
    new_content = input('输入修改后的内容:')
    modify(modify_path, old_content, new_content)
    

    方法二
    实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
    优点: 不会占用过多的内存
    缺点: 在文件修改过程中同一份数据存了两份

    import os
    
    
    def modify(modify_path, old_content, new_content):
        '''文件修改'''
        with open(r'{}'.format(modify_path), mode='rt', encoding='utf-8') as f1, 
                open(r'.{}.swap'.format(modify_path), mode='wt', encoding='utf-8') as f2:
            for line in f1:
                f2.write(line.replace(old_content, new_content))
        os.remove(r'{}'.format(modify_path))
        os.rename(r'.{}.swap'.format(modify_path), r'{}'.format(modify_path))
    
    
    modify_path = input('输入要修改的文件路径:')
    old_content = input('输入要修改的内容:')
    new_content = input('输入修改后的内容:')
    modify(modify_path, old_content, new_content)
    

    题目二:用函数编写tail工具

    import time
    def tail():
        with open('access.log', mode='rb') as f:
            # 1、将指针跳到文件末尾
            # f.read() # 错误
            f.seek(0, 2)
    
            while True:
                line = f.readline()
                if len(line) == 0:
                    time.sleep(5)
                else:
                    print(line.decode('utf-8'), end='')
    tail()
    

    题目三:用函数编写登录功能

    def login():
        count = 0
        count_1 = 3
        user_name = input('输入账号:').strip()
        with open('db.txt', mode='rt', encoding='utf-8') as f:
            for i in f:  # 定义文本中的账号密码
                info_name, info_pwd = i.strip().split(':')
                if user_name == info_name:
                    with open('black.txt', mode='r+t', encoding='utf-8') as f1:
                        for n in f1:
                            # print( user_name,n,end='') # 验证输入账号跟黑名单账号
                            name1 = n.strip()  # 因为文件中每一行默认有个换行'
    ' 所以要加strip去空格
                            if user_name == name1:
                                print('该账号被锁定')
                                break
                        else:
                            print('
    该账号没有被锁定,可以输入密码')
                            while count < 3:
                                print('你还有%s次机会' % (count_1))
                                user_pwd = input('输入密码:')
                                if user_pwd == info_pwd:
                                    print('登录成功')
                                    break
                                else:
                                    print('密码错误')
                                    count += 1
                                    count_1 -= 1
                            else:
                                print('密码错误过多,该账号已被锁定')
                            with open('black.txt', mode='at+', encoding='utf-8') as f2:
                                f2.write('
    %s' % (user_name))
                    break
            else:
                print('没有该账号')
    login()
    

    题目四:用函数编写注册功能

    def creat():
        name = input('注册账号:')
        password = input('注册密码:')
        with open('db.txt', mode='r+t', encoding='utf-8') as f:
            for i in f:
                info_name, info_pwd = i.strip().split(':')
                if name == info_name:
                    print('账号已注册')
                    break
            else:
                with open('db.txt', mode='at', encoding='utf-8') as n:
                    n.write('{}:{}
    '.format(name, password))
                    print('完成注册')
    
        user = input('请输入用户名:')
        pwd = input('请输入密码:')
        with open(r'user_info.txt', 'a', encoding='utf-8') as f:
            f.write('{}:{}
    '.format(user, pwd))
            print('注册成功')
    creat()
    
  • 相关阅读:
    字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
    Context Application 使用总结 MD
    RxJava RxPermissions 动态权限 简介 原理 案例 MD
    Luban 鲁班 图片压缩 MD
    FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
    组件化 得到 DDComponent JIMU 模块 插件 MD
    gradlew 命令行 build 调试 构建错误 Manifest merger failed MD
    protobuf Protocol Buffers 简介 案例 MD
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    [工具配置]requirejs 多页面,多入口js文件打包总结
  • 原文地址:https://www.cnblogs.com/liuxinging/p/12513593.html
Copyright © 2011-2022 走看看