最近有一个需求,需要将一部分C代码文件在RAM中运行,每个运行在RAM中的代码需要在文件头部和尾部添加宏定义,但是遇到文件数量特别多的时候,手动添加很费劲,为此写了一个脚本实现批处理文件,在.c文件头部和尾部添加宏定义

关于ROM和RAM运行速度的区别,可以查看这个博客:(点击我)

脚本首先要实现参数传入,设置路径、在文件头部添加文本、文件尾部添加文本

然后遍历所有文件夹,修改.c文件

脚本源码:

import os
import argparse

#脚本使用示例 python .\DirTest.py --start '#pragma arm section code = \"RAMCODE\"' --end "#pragma arm section" --path "C:\Users\13588\Desktop\pythonDirTest"

parser = argparse.ArgumentParser()#获取传入参数
parser.add_argument('--start', type=str, default = " " )
parser.add_argument('--end', type=str, default = " ")
parser.add_argument('--path', type=str, default = " ")

args = parser.parse_args()
StrStart = args.start
StrEnd = args.end
StrPath = args.path

print("遍历文件夹->"+StrPath)
print("在头部添加->"+StrStart)
print("在尾部添加->"+StrEnd)

for dirpath, dirnames, filenames in os.walk(StrPath):#遍历所有文件
    for filename in filenames:
        currentdir =os.path.join(dirpath, filename) #组合成路径
        if currentdir[-2:] == ".c" : #判断是不是.c文件
            print("开始处理:"+currentdir)

            fb = open(file = currentdir,mode = "r+",encoding="utf-8")
            old = fb.read()
            fb.seek(0,0)
            fb.write(StrStart+"\n")#添加头部字符
            fb.write(old)
            fb.seek(0,2)
            fb.write("\n"+StrEnd+"\n")#添加尾部字符
            fb.close()
print("脚本运行完成")

运行示例:
注意,双引号需要添加转义字符

dirtest.png