• python3 文件处理进阶,对文件的增删改查操作


      python3 文件处理进阶

    对文件的增删改查操作,主要原理是:把原文件的数据读到内存中,再在内存中进行增删改查等一系列操作,最后把改好的内容重新存入硬盘

    我们直接来看例子:

    有文件'诗歌'如下内容:

    昔人已乘黄鹤去,此地空余黄鹤楼。
    黄鹤一去不复返,白云千载空悠悠。
    晴川历历汉阳树,芳草萋萋鹦鹉洲。
    日暮乡关何处是?烟波江上使人愁。

    part1:删除第三行

    既然要删除第三行,那就要把原有的内容读取到内存中,保存下来,再对文件进行修改
    方法一:
     1 # 打开文件,用只读'r'的模式打开,把数据读到内存中
     2 f = open("诗歌",'r',encoding="utf-8")  
     3 li = f.readlines()  # readlines()把文件一行一行读出来,并存成一个列表
     4 f.close()  # 关闭文件
     5 
     6 # 再次打开同一文件,这次采用w模式,对文件进行覆盖修改
     7 with open("诗歌",'w',encoding="utf-8") as f2:  
     8     li.pop(2)  # 对存到内存中的列表li进行列表操作,pop(index),去掉索引出的值,即第三行
     9     for i in li:  # 对列表进行遍历,把每一行写入原文件中。此时:因为w模式打开文件,文件内容为空!
    10         f2.write(i)
    
    

      方法二:

     1 import os
     2 
     3 p = '诗歌'
     4 file = open(p, 'r', encoding='utf-8')  # 把内容读到内存中
     5 
     6 pnew = '%s.new' % p
     7 filenew = open(pnew, 'w', encoding='utf-8')  # filenew为空文件
     8 
     9 str1 = '晴川历历汉阳树,芳草萋萋鹦鹉洲。'
    10 for i in file:  # 对文件进行遍历,读出每一行
    11     if str1 in i:  # 如果要删除的部分在这一行
    12         i = ''  # 这一行赋值为空,如要修改为其他内容,则赋值为其他内容
    13         filenew.write(i)  # 写入新文件filenew
    14     else:
    15         filenew.write(i)  # 没有修改目标,则原封不动的把'诗歌'文件中的内容写入新文件
    16 file.close()  # 关闭'诗歌'文件
    17 filenew.close()
    18 os.replace(pnew, p)  # windows下,引用os模块,os.replace(new,old)对文件重命名

     方法三:

     1 import os
     2 
     3 a = '诗歌'
     4 b = '诗歌2'
     5 with open(a, 'r', encoding='utf-8') as f:
     6     with open(b, 'w', encoding='utf-8') as f2:
     7         for i in f:
     8             if '晴川历历汉阳树,芳草萋萋鹦鹉洲。' in i:
     9                 pass
    10             else:
    11                 f2.write(i)
    12 os.replace(b, a)
    part2:增加‘因为宇宙不是童话。’到最后一行

    依然通过列表操作,进行追加
    1 f = open("诗歌",'r',encoding="utf-8")  # 打开文件,用只读'r'的模式打开,把数据读到内存中
    2 li = f.readlines()  # readlines()把文件一行一行读出来,并存成一个列表
    3 f.close()  # 关闭文件
    4 
    5 with open("诗歌",'w',encoding="utf-8") as f2:  # 再次打开同一文件,这次采用w模式,对文件进行覆盖修改
    6     li.append('
    因为宇宙不是童话。')  # 对存到内存中的列表li进行列表操作,append(),在末尾进行追加
    7     for i in li:  # 对列表进行遍历,把每一行写入原文件中。此时:因为w模式打开文件,文件内容为空!
    8         f2.write(i)
    
    
    
     
  • 相关阅读:
    【转载】线程数究竟设多少合理
    【转载】lvs为何不能完全替代DNS轮询
    接口测试考虑点
    隐式等待的两种写法
    邮件的操作
    Python列表排序 reverse、sort、sorted 操作方法
    兼容和适配的区别
    文件操作-oracle数据库
    初试线程-文件操作
    Selenium Grid分布式测试入门笔记
  • 原文地址:https://www.cnblogs.com/QQL-anatkh/p/9116867.html
Copyright © 2020-2023  润新知