零号智能

  • Python
  • 部署
  • go
  • VPS
  • 运维
  • 生活琐事
  • html
零号智能
Fantasia's blog npc0.com.
  1. 首页
  2. Python
  3. 正文

Python3 open r+ write修改文本信息时会有多出字符串

2020年5月12日 10682点热度 1人点赞 1条评论

今天朋友问了我一个问题大致代码如下

def replace_file(suff):
    fp = open(file_name, 'r+', 'UTF-8')
    text_list = fp.readlines()
    for line in text_list:
        line_new = line.replace("xxxxxxxxxxx", suff)
        fp.write(line_new)
    fp.close()

这是一个批量文本替换功能的一部分,但是在实际应用时,却发现部分文本出现了诡异的替换结果,如:<user_name>sisnsadwqqw</user_name> 某一段需要替换成 <user_name>sisn</user_name>。

但是实际上的替换效果却是 <user_name>sisn</user_name>n\n</user_name>,造成这种结果的是因为python3的r+中使用write后,会造成更替(replace)效果,即一个字节一个字节的替换原本的内容,要是长度超过之前的内容还好,能得出我们想要的正确结果,若是替换的内容短与之前的内容,就会造成部分内容还是之前的效果。

# r+  读写 不重新创建 而是在源文件写
# 要注意写的时候,文件指针的位置,
# 不然可能覆盖原先部分内容
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2021年5月22日

vpc

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • استوری

    Best Expert Advice Forum

    2021年1月19日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    COPYRIGHT © 2021 npc0.com. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    粤ICP备19157245号-1

    粤公网安备 44030702002746号