批量替换字符串的python实现

作者:朱金灿
来源:clever101的专栏

问题描述

  最近在编译glut库,发现很多makefile文件需要批量替代字符串,于是就用python写了一个工具程序实现批量替代字符串。

问题解决

  这个功能主要涉及两个函数:遍历指定目录下的指定后缀的文件和对单个文件进行字符串替换。代码实现如下:

#!/usr/bin/python
# -*- coding=utf-8 -*-
# author : clever101@163.com
# date: 2022-05-30
# version: 0.1
#propose:遍历文件夹中在多个文本文件中替换字符串
#参考文献:
#Python实践:一键批量替换不同文本字符串
#https://blog.csdn.net/qq_17256689/article/details/123485731

import sys
import os

# repalce str_a with str_b
def file_process(file_path, a, b):
    print(file_path)
    lens = len(a)
    f = open(file_path, 'r+', encoding='utf-8')
    all_the_lines = f.readlines()
    f.seek(0)  # 移动文件指针,到最开始处
    f.truncate()      # 从当前位置起,往后所有数据进行截断删除
    for line in all_the_lines:
        for i in range(lens):
            line = line.replace(a[i], b[i])
        f.write(line)  # 向文件中按行写入替换后的文本
    f.close()
    return


# mode 0/1
# 0表示老到新,1表示新到老,其他则报错提示
# suffix表示指定后缀
def typedef_switch(dirc, old_type, new_type, mode,suffix):
    if mode != 0 and mode != 1:
        print('Mode set error, mode={}'.format(mode))
        return

    a = []
    b = []
    if mode == 0:
        a = old_type
        b = new_type
    else:
        b = old_type
        a = new_type

    filelist = os.listdir(dirc)
    for file in filelist:
        file_path = os.path.join(dirc, file)
        if os.path.isfile(file_path):
            if os.path.splitext(file_path)[1] == suffix:
                file_process(file_path, a, b)
        elif os.path.isdir(file_path):
            typedef_switch(file_path, old_type, new_type, mode, suffix)

if __name__ == '__main__':
    # an example
    old_type = ['!include <win32.mak>']
    #old_type = ['123456789']
    #输入\\要进行特别处理
    new_type = ['!include <C:\\\\Program Files (x86)\\\\Microsoft SDKs\\\\Windows\\\\v7.1A\\\\Include\\\\Win32.mak>']
    #new_type = ['aaa']
    pathFolder = r'D:\MyProject\publish\glut-3.7'
    #pathFolder = r'D:\MyProject\publish\test'
    typedef_switch(pathFolder, old_type, new_type, 0,'.win')
    print('done!')

    # 正式退出main函数进程,以免main函数空跑
    sys.exit()

参考文献

1.Python实践:一键批量替换不同文本字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值