python实现目录下所有文件中的字符串替换

这是一个使用Python编写的脚本,功能是递归搜索指定目录下的所有.c和.h文件,将文件中的所有#define替换为#define ,增加了空格。脚本首先获取目录中的文件列表,然后逐行读取并替换目标字符串,最后将修改写回文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:递归整个目录查找所有的".c" 和 ".h"文件。并将文件中的所有"#define"替换为“#define ”。

注意:"#define" 替换后有一个空格"#define  "。

#!/usr/bin/env python

import os
import re
import sys

file_type_list = ['c', 'h']

#get all files
def get_file_list(dir):
    filelist = []
    for dirpath,dirnames,filenames in os.walk(dir):
        for file in filenames:
            file_type = file.split('.')[-1]
            if (file_type in file_type_list):
                file_fullname = os.path.join(dirpath,file)
                filelist.append(file_fullname)
    return filelist

if __name__ == '__main__':
    src_dir = os.path.dirname(os.path.abspath(__file__))  # 获取当前绝对路径,也可以写死
    
    #src_dir	=r"C:\code_nxp\mcu-sdk-2.0_ear2_dev1\middleware\wifi_nxp"
    #src_dir	=r"C:\code_nxp\wifi_nxp_pan2"
    
    print(src_dir)
    files = get_file_list(src_dir)
    old_str="#include"
    new_str="#include "
    pattern = old_str
 
    
    old_str1="#define"
    new_str1="#define "
    pattern1 = old_str1
    for file in files: 
        print("file:   " + str(file))
        with open(file, encoding='utf-8',errors='ignore') as f:
        #with open(file,"r") as f:
            lines = f.readlines()
            ss = ""
            for line in lines:
                if (re.match(pattern, line)):
                    #print("line:     " + str(line))
                    line = line.replace(old_str, new_str)
                elif (re.match(pattern1, line)):
                    #print("line:     " + str(line))
                    line = line.replace(old_str1, new_str1)

                ss += line
        with open(file, "w", encoding='utf-8') as f:
            f.write(ss) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值