栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

批量替换字符串的python实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

批量替换字符串的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 ']
    #old_type = ['123456789']
    #输入\要进行特别处理
    new_type = ['!include ']
    #new_type = ['aaa']
    pathFolder = r'D:MyProjectpublishglut-3.7'
    #pathFolder = r'D:MyProjectpublishtest'
    typedef_switch(pathFolder, old_type, new_type, 0,'.win')
    print('done!')

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/938114.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号