• 🍖文件的修改


    引入

    1.修改的概念

    • 对于硬盘上数据的修改, 根本没有改的操作, 只有覆盖操作

    2.修改的流程

    • 文件的修改都是数据加载到内存中, 在内存中修改完再覆盖入硬盘

    一.修改方式一

    1.修改过程

    • 先以 r 模式打开源文件,将源文件内容全部读入内存
    • 然后在内存中完成修改
    • 再以 w 模式打开源文件,将修改后的内容覆盖入源文件

    2.优缺点

    • 优点 : 不须要硬盘预留足够的空间
    • 缺点 : 会在文件内容过大的情况下,占用过多的内存

    3.使用场景

    • 看情况而定, 一般用于文本编辑器, 让用户能看到全部的内容
    with open('user.txt',mode='r',encoding='utf-8') as f:
        data=f.read()
        data=data.replace('派大星','派大星和海绵宝宝')
    
    with open('user.txt',mode='w',encoding='utf-8') as f:
        f.write(data)
    

    二.修改方式二

    1.修改过程

    • r 模式打开源文件,然后以 w 模式打开一个临时文件
    • 从源文件中读一行到内存中,修改完毕后直接写入临时文件,循环往复,直到操作完毕所有行
    • 删除源文件,将临时文件名改名为源文件名

    2.使用到 OS 模块

    • import os : 导入模块
    • os.remove( ) : 删除
    • os.rename( ) : 改名

    3.优缺点

    • 优点 :没有对内存造成过度的占用
    • 缺点:需要硬盘预留出足够的空间来存放临时文件

    4.适用场景

    • 看具体而定, 一般用于程序员开发式
    import os
    
    with open('user.txt',mode='rt',encoding='utf-8') as read_f,\
            open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:
    
        for line in read_f:
            if '派大星' in line:
                line=line.replace('派大星','派大星和海绵宝宝')
    
            write_f.write(line)
    
    os.remove('user.txt')                  #删除源文件 
    os.rename('user.txt.swap','user.txt')  #把临时文件名改成源文件名
    

    三.文件拷贝示例

    可以拷贝任意类型的文件

    "os.path.isfile()" 先判断文件是否存在
    import os
    while 1:
        user_file = input("请输入文件路径>>").strip()
        if not os.path.isfile(user_file):
            print("文件不存在,请重新输入")
            continue
        else:
            copy_path = input("请输入目标路径>>").strip()
            with open(r"%s"%(user_file),"rb")as read_file,\
                open(r"%s"%(copy_path),"ab")as w_f:
                for line in read_file:
                    w_f.write(line)
                if len(user_file) == len(copy_path):
                    print("copy成功")
                    break
    
  • 相关阅读:
    读写excel文件
    数据库操作
    django项目搭建
    django基础
    string
    random函数
    vue-typescript入门
    Visual Studio 2019配置vue项目
    js css+html实现简单的日历
    python接口自动化4-绕过验证码登录(cookie)
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14052842.html
Copyright © 2020-2023  润新知