Python3使用mmap进行文件内容替换

  你想将文件里面的所有'hello'字符串全部换成'nihao',而又不想创建临时文件,可以尝试如下方法:

import mmap
import contextlib


def modify_text_file(file,src,dst):
    if len(src) != len(dst):
        print ("Sorry,替换字符串的长度不一样,无法进行替换!")
        return
    with open("D:\\123.txt",'r+') as fp:
        with contextlib.closing(mmap.mmap(fp.fileno(), 0,access=mmap.ACCESS_WRITE)) as mm:
            mm.seek(0)
            while True:
                local = mm.find(src)
                if local >= 0:
                    print (local)
                    mm[local:local+len(src)] = dst
                else:
                    break
    print ('替换完成!')


if __name__ == '__main__':
    file = 'D:\\123.txt'
    src = b'hello
    dst = b'nihao'

    modify_text_file(file,src,dst)

 

如果文件不太大,也可以使用正则替换:

import re
import mmap
import contextlib


def modify_text_file(file,src,dst):
    if len(src) != len(dst):
        print ("Sorry,替换字符串的长度不一样,无法进行替换!")
        return
    reg = re.compile(src,re.IGNORECASE)
    with open("D:\\123.txt",'r+') as fp:
        with contextlib.closing(mmap.mmap(fp.fileno(), 0,access=mmap.ACCESS_WRITE)) as mm:
            mm.seek(0)
            data = reg.sub(dst,mm)
            mm.write(data)
    print ('All OVER')
            

if __name__ == '__main__':
    file = 'D:\\123.txt'
    src = b'hello'
    dst = b'nihao'

    modify_text_file(file,src,dst)

欢迎关注本人微信公众号,会分享更多的干货:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值