将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)
相关推荐
羲云网络2 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记5 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
小小张说故事5 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
天天被压力7 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力8 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
特立独行的猫A8 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
小lo想吃棒棒糖8 小时前
把机器人训练从 GPU 搬到昇腾 NPU:启元 Q1 起身动作 PPO 训练全记录
python·机器人·昇腾·启元机器人
Thanks_ks8 小时前
【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
ide·python·pycharm·开发工具·jetbrains·开发环境·集成开发环境
青少儿编程课堂9 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
tellmewhoisi10 小时前
nlp:知识库检索和dify知识库创建
python·自然语言处理