如何修改Python代码让生成的XML文件名含TW、TS、core_h参数值
修改Python代码生成带参数值的XML文件名
我来帮你搞定这个文件名定制的需求!核心思路就是把当前迭代的TW、TS、core_h参数值直接嵌入文件名,替代原来单调的数字序号。下面是修改后的完整代码,再给你拆解关键改动点:
修改后的代码
def BOFunc(): q = 20 m = 1 # 保留原线程控制的计数器,按需调整 # 遍历Traces节点 for child in root.iter('Traces'): for ts in frange(3, 12.75, 0.25): child.set('TS', str(ts)) for tw in frange(3, 12.75, 0.25): child.set('TW', str(tw)) # 遍历Stackup节点 for child2 in root.iter('Stackup'): for h in frange(2, 4, 0.5): # 处理参数的显示格式,避免浮点数精度问题(比如3.0显示为3,3.25保留两位小数) ts_display = str(int(ts)) if ts.is_integer() else f"{ts:.2f}" tw_display = str(int(tw)) if tw.is_integer() else f"{tw:.2f}" h_display = str(int(h)) if h.is_integer() else f"{h:.1f}" # 构建带参数的文件名 filename = f"TW_{tw_display}-TS_{ts_display}-core_h_{h_display}.xml" # 更新Definition节点的modelname for child3 in root.iter('Definition'): child3.set('modelname', filename) # 设置core_h参数 child2.set('core_h', str(h)) # 写入XML文件(注意用原始字符串处理Windows路径) output_path = r'C:\Users\Aravind_Sampathkumar\Desktop\IMLC\BO\{}'.format(filename) tree.write(output_path) # 启动线程处理任务 D = threading.Thread(target=foo, args=(filename,)) # 用文件名替代fileCount作为线程参数 D.start() # 保留原线程批量等待逻辑 if m % 5 == 0: D.join() m += 1
关键改动说明
文件名构建:
用Python的f-string语法直接将参数值拼接到文件名模板中,同时加入了浮点数格式处理,避免出现3.2500000000000004这类精度问题,让文件名更整洁。移除冗余变量:
不再需要fileCount来计数命名,直接用参数组合唯一标识每个文件,更直观也更易追溯对应参数。路径与线程参数优化:
- Windows路径改用原始字符串(
r'')避免反斜杠转义错误; - 线程参数从
fileCount换成了新的文件名,方便后续线程任务识别对应的文件。
- Windows路径改用原始字符串(
保留原有逻辑:
保留了你原来的线程批量等待(每5个线程等待一次)、参数遍历范围等逻辑,确保功能一致性。
内容的提问来源于stack exchange,提问作者Potato
相关产品推荐
相关产品推荐

