Match Group中修改Target

本文介绍如何通过建立MatchGroup并在相对延迟(RelativeDelay)参数下设置目标(Target),以实现精确的时间控制。此方法适用于需要调整信号间时序关系的设计。

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

建立Match Group 后再 Relative Delay --》 Delta Tolerance 下对应Net 方格中右键单击, 选择Set as Target

import os import shutil import re from collections import defaultdict def move_and_update_md_files(root_dir): # 确保根目录存在 if not os.path.isdir(root_dir): print(f"错误:目录不存在 - {root_dir}") return # 创建目标images目录 target_image_dir = os.path.join(root_dir, "images") os.makedirs(target_image_dir, exist_ok=True) # 存储文件名冲突解决方案 md_name_mapping = {} image_name_mapping = defaultdict(dict) # 第一轮:收集所有MD文件并计划重命名 for foldername, _, filenames in os.walk(root_dir): # 跳过根目录和目标images目录 if foldername == root_dir or foldername == target_image_dir: continue for filename in filenames: if filename.lower().endswith('.md'): orig_path = os.path.join(foldername, filename) # 处理MD文件名冲突 new_name = filename if filename in md_name_mapping: base, ext = os.path.splitext(filename) counter = 1 while f"{base}_{counter}{ext}" in md_name_mapping.values(): counter += 1 new_name = f"{base}_{counter}{ext}" md_name_mapping[orig_path] = new_name # 第二轮:处理图片和MD文件 for foldername, subfolders, filenames in os.walk(root_dir): # 跳过根目录和目标images目录 if foldername == root_dir or foldername == target_image_dir: continue # 处理MD文件 for filename in filenames: if not filename.lower().endswith('.md'): continue orig_md_path = os.path.join(foldername, filename) new_md_name = md_name_mapping.get(orig_md_path, filename) new_md_path = os.path.join(root_dir, new_md_name) # 读取并更新MD内容 with open(orig_md_path, 'r', encoding='utf-8') as f: content = f.read() # 更新图片引用 updated_content = re.sub( r'!\[.*?\]\((.*?)\)', lambda m: update_image_ref(m, foldername, target_image_dir, image_name_mapping), content ) # 写入新位置 with open(new_md_path, 'w', encoding='utf-8') as f: f.write(updated_content) # 删除原MD文件 os.remove(orig_md_path) # 处理图片文件 image_dir = os.path.join(foldername, "images") if os.path.isdir(image_dir): for img_name in os.listdir(image_dir): src_path = os.path.join(image_dir, img_name) if not os.path.isfile(src_path): continue # 处理图片名冲突 new_img_name = img_name if img_name in image_name_mapping: base, ext = os.path.splitext(img_name) counter = 1 while f"{base}_{counter}{ext}" in os.listdir(target_image_dir): counter += 1 new_img_name = f"{base}_{counter}{ext}" dest_path = os.path.join(target_image_dir, new_img_name) shutil.move(src_path, dest_path) image_name_mapping[img_name] = new_img_name # 删除空子文件夹 for foldername, subfolders, filenames in os.walk(root_dir, topdown=False): if foldername != root_dir and not os.listdir(foldername): os.rmdir(foldername) def update_image_ref(match, orig_folder, target_image_dir, name_mapping): orig_ref = match.group(1) img_path = os.path.normpath(os.path.join(orig_folder, orig_ref)) # 如果图片已移动 if os.path.isfile(img_path): img_name = os.path.basename(img_path) new_name = name_mapping.get(img_name, img_name) return match.group(0).replace(orig_ref, f"images/{new_name}") return match.group(0) if __name__ == "__main__": # 使用当前目录作为根目录,或替换为您的路径 target_directory = os.getcwd() print("开始整理文件和图片...") move_and_update_md_files(target_directory) print("操作完成!") print(f"所有MD文件已移动到: {target_directory}") print(f"所有图片已移动到: {os.path.join(target_directory, 'images')}") 修改代码,这个代码运行后md文件与图片的对应关系发生变化,对每一个文件夹内部进行处理时,应该创建一个字典,保存原文件名和新文件名的对应关系,再重命名图片,根据字典修改引用,最后再将所有文件移到最外面。
最新发布
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值