• Python正课29 —— 文件修改


    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12511686.html

    一:文件修改low

    在a.txt文件中的数据为:

    张一蛋     山东    179    49    12344234523
    李二蛋     河北    163    57    13913453521
    王全蛋     山西    153    62    18651433422
    

    执行代码:

    with open('a.txt',mode='r+t',encoding='utf-8') as f:
        res = f.read(9)	# 读取前9个字符:张一蛋     山
        print(res)
        f.seek(9,0)		# 把指针移到第9个bytes
        f.write('<男妇女主任>')	# 一个汉字对应3个bytes,此处共有3*5+2=17个bytes
    

    执行后,a.txt中的内容

    张一蛋<男妇女主任>9    49    12344234523
    李二蛋     河北    163    57    13913453521
    王全蛋     山西    153    62    18651433422
    

    二:文件修改的2种方式

    方式1:文本编辑采用的就是这种方式

    实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件

      优点: 在文件修改过程中同一份数据只有一份
      缺点: 会过多地占用内存

    # 文件的读取
    
    with open('c.txt',mode='rt',encoding='utf-8') as f:
        res=f.read()
        data=res.replace('alex','dsb')
        print(data)
    
    # 文件的写入
    
    with open('c.txt',mode='wt',encoding='utf-8') as f1:
        f1.write('111')
    

    方式2:import os

    实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,

    修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名

      优点: 不会占用过多的内存
      缺点: 在文件修改过程中同一份数据存了两份

    在c.txt中的内容:

    alex is sb
    sb is alex
    egon is hahahahah
    

    执行文件

    import os		# 导入OS模块
    
    with open('c.txt', mode='rt', encoding='utf-8') as f, 
            open('.c.txt.swap', mode='wt', encoding='utf-8') as f1:
        for line in f:
            f1.write(line.replace('alex', 'dsb'))	# 把alex替换为dsb
    
    os.remove('c.txt')	# 删除原文件
    os.rename('.c.txt.swap', 'c.txt')	# 把临时文件重命名为原文件
    

    执行后,c.txt中的内容

    dsb is sb
    sb is dsb
    egon is hahahahah
    
  • 相关阅读:
    Linux 设备驱动开发
    Neat Matrix Library矩阵库
    使用Linux开源组件而不使用Linux的RTOS解决方案embox
    命令行参数解析getopt
    Linux platform 设备
    编写C编译器 、 操作系统方面知识
    Embassy/Rust 和 FreeRTOS/C的速度比较
    SysAK 应用抖动诊断篇—— eBPF又立功了! | 龙蜥技术
    做ToB软件质量保障的这两年
    PolarDBX迎来开源后首个重大版本升级,2.1版本新增5大特色功能
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/12511686.html
Copyright © 2020-2023  润新知