如何用Python同时修改多文件夹中Test.py的beta值?
批量修改多文件夹下Test.py中的beta值
错误原因分析
你用os.read()的方式完全错误:
os.read()需要两个参数:文件描述符(需通过os.open()获取)和要读取的字节数,直接传入文件路径必然触发参数错误- 你的代码仅定义了
beta=1e-1变量,完全没有对文件内容做修改的逻辑,根本达不到批量修改文件的目的
正确实现步骤
批量修改文件内容需遵循「读取文件内容 → 替换目标内容 → 重新写入文件」的流程:
- 遍历目标文件夹列表,拼接出每个Test.py的完整路径
- 检查文件是否存在,避免报错
- 读取文件全部内容
- 用正则表达式精准匹配并替换原有的beta赋值语句(兼容多种写法,比如
beta=0.5、beta = 1e-3等) - 将修改后的内容写回原文件
完整代码示例
import os import re # 目标文件夹编号列表 N = [8,10,23,29,36,37,41,42,45,46,47] # 要设置的目标beta值 target_beta = 1e-1 for i in N: file_path = rf'C:\Users\User\{i}\Test.py' # 跳过不存在的文件 if not os.path.exists(file_path): print(f"跳过不存在的文件:{file_path}") continue # 读取文件内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 正则替换beta赋值语句:兼容各种数字格式(整数、小数、科学计数法) modified_content = re.sub(r'beta\s*=\s*(\d+|\d+\.\d+|[\deE+-]+)', f'beta = {target_beta}', content) # 写入修改后的内容 with open(file_path, 'w', encoding='utf-8') as f: f.write(modified_content) print(f"已完成修改:{file_path}")
注意事项
- 若Test.py中beta的赋值写法特殊(比如带注释、多行拆分),需要调整正则表达式以匹配对应格式
- 建议先找单个测试文件验证替换效果,确认无误后再批量操作
- 操作前最好备份原文件,防止意外修改导致数据丢失
内容的提问来源于stack exchange,提问作者user20032724
相关产品推荐
相关产品推荐

