5.7 文件的修改

5.7 文件的修改

文件不能插入,但是有需求要修改文件。

5.7.1 修改文件的两种方法

#读和写分开

#方法1
 with (open('test.txt',mode='r',encoding='utf-8') as f_r):
     data=f_r.read()
     print(data,type(data))
     data=data.replace('world','bayue')
     print(data)

#新建test_copy文件
 with open('test.txt',mode='w',encoding='utf-8') as f_w:
     f_w.write(data)


以上方式容易报错,可能多个用户同时修改写入同一个文件,会乱掉

#方法2
with open('test.txt',mode='r',encoding='utf-8') as f_r:
    data=f_r.read()
    print(data,type(data))
    data=data.replace('world','bayue')
    print(data)

#新建test_copy文件
with open('test_copy.txt',mode='w',encoding='utf-8') as f_w:
    f_w.write(data)

import os

#删除源文件test.txt
os.remove('test.txt')

# 将test_copy.txt文件名称修改为test.txt
os.rename('test_copy.txt','test.txt')

总结

方法1

  • 如果qq想修改文件中的a为b,而微信想修改文件中的a为c,两者修改时间由先后顺序。

  • qq先修改完成,但是微信已经在文件中找不到a了,就容易报错。

方法2

  • 如果qq想修改文件中的a为b,而微信想修改文件中的a为c。
  • 所以给qq和微信各一份copy文件,让它们各自修改,也是有先后顺序。
  • 修改成功后,删除源文件,修改copy文件名为原来的文件名。

5.7.3 合并与优化代码

  • 合并代码
#同时打开两个文件
with open('test.txt',mode='r',encoding='utf-8') as f_r,\
        open('test_copy.txt', mode='w', encoding='utf-8') as f_w:

    data=f_r.read()
    print(data,type(data))
    data=data.replace('world','bayue')
    f_w.write(data)
    print(data)

import os

os.remove('test.txt')

os.rename('test_copy.txt','test.txt')

当文件非常大时

with open('test.txt',mode='r',encoding='utf-8') as f_r: 
    print(f_r.readlines()) #readlines需要额外占用内存空间
    # for i in f_r.readlines():
    #     print(i)
    for i in f_r: #f_r相当于readlines(),是生成器,一个可迭代对象。但是无需额外开辟内存空间。
        print(i)

  • 优化上述代码
#1.打开文件,创建拷贝文件
with open('test.txt',mode='r',encoding='utf-8') as f_r,\
        open('test_copy.txt', mode='w', encoding='utf-8') as f_w: #w清空文件,write只负责写
    
    #2. 读取文件内容并且修改文件内容
    for i in f_r: #无需新开辟一块内存空间存放文件内容
        i=i.replace('world','bayue')
        
        #3. 修改后的内容写入拷贝文件
        f_w.write(i)

import os

#4.删除源文件
os.remove('test.txt')

#5.更改拷贝文件名称为源文件名称
os.rename('test_copy.txt','test.txt')

总结重点

  1. with open(r'filepath',mode,encoding) as filename:
    file操作

  2. rt/rb/wt/at

    1. 文件的复制改写步骤
      1. 打开文件,创建拷贝文件
      2. 读取文件内容并且修改文件内容
      3. 修改后的内容写入拷贝文件
      4. 删除源文件
      5. 更改拷贝文件名称为源文件名称
posted @ 2025-08-17 15:31  bokebanla  阅读(34)  评论(0)    收藏  举报