将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件

一、将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件

二、python程序

python 复制代码
import os
from pathlib import Path
import shutil

# 获取当前文件夹
current_directory = Path.cwd()
# 目标文件夹
target_root = Path(r"C:\***\esp32practise\01_led\components\BSP")
target_root_main = Path(r"C:\***\esp32practise\01_led\main")
# 获取当前文件夹下所有有效文件夹,并取出components的文件夹的集合
foler_3_name_set = set()
for folder_1 in current_directory.iterdir():
    # 过滤非文件夹和系统文件夹
    if not folder_1.is_dir() or folder_1.name.startswith('.'):
        continue 
    folder_components = folder_1/'components'/'BSP'
    folder_main = folder_1/'main'
    if not folder_components.is_dir():
        continue
    for foler_3 in folder_components.iterdir():
        if not foler_3.is_dir():
            continue
        foler_3_name_set.add(foler_3.name)
        dest = target_root / foler_3.name
        # shutil.copytree(foler_3,dest,dirs_exist_ok=True)
        # 获取当前文件夹下main的文件夹下的main.c文件,并更名为main_components模块名.c
        for file_main in folder_main.iterdir():
            if file_main.name == 'main.c':
                file_new_name = 'main_'+foler_3.name+'.c'
                dest_file = target_root_main/file_new_name
                shutil.copy2(file_main,dest_file)
                print('main_'+foler_3.name+'.c')

# 重新生成CMakelist.txt文件
CMakelist_file = target_root/'CMakeLists_1.txt'
with open(CMakelist_file,'w',encoding='utf-8') as file:
    add_str = ''
    for src_dirs in foler_3_name_set:
        add_str += ('    '+src_dirs+'\n')
    file.write("set(src_dirs\n")
    file.write(add_str)
    file.write(')\n')
    file.write("set(include_dirs\n")
    file.write(add_str)
    file.write(')\n')
    file.write('set(requires\n    driver)\n')
    file.write('idf_component_register(SRC_DIRS ${src_dirs} INCLUDE_DIRS ${include_dirs} REQUIRES ${requires})\n')
    file.write('component_compile_options(-ffast-math -O3 -Wno-error=format=-Wno-format)\n')
print('out:',src_dirs)
相关推荐
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技4 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时4 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
奇思妙想聪明勤奋的小羊4 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1234 天前
2026年第38周GitHub趋势周报
python·科技·github
IZero074 天前
Jev 与 Laya
python·语言模型