基于Monster 组和GPT的调写:
import os
# 定义变量I和D的取值列表
I_list = [1, 2, 3, 4]
D_list = [100, 200, 300, 400]
# 遍历I和D的取值组合,生成16个文件夹并复制文件
for I in I_list:
for D in D_list:
folder_name = f"计算{I}-{D}"
os.makedirs(os.path.join("D:\\", folder_name))
os.system(f"xcopy /E /I \"D:\\计算\" \"D:\\{folder_name}\"")
# 修改input.txt文件内容
input_file = os.path.join("D:\\", folder_name, "input.txt")
with open(input_file, "r+") as f:
lines = f.readlines()
# 修改第4行第4项
line4 = lines[3].split()
line4[3] = str(D * 30)
lines[3] = " ".join(line4) + "\n"
# 修改第10行
I_D = I * D
line10 = f"{0.001 * I_D / 864:.2e}"
lines[9] = line10 + "\n"
# 写回文件
f.seek(0)
f.writelines(lines)
f.truncate()
# 运行index.exe文件
index_file = os.path.join("D:\\", folder_name, "index.exe")
os.system(index_file)
# 运行tgs.exe文件
for I in I_list:
for D in D_list:
folder_name = f"计算{I}-{D}"
tgs_file = os.path.join("D:\\", folder_name, "tgs.exe")
os.system(tgs_file)
注释:
- os.makedirs函数用于创建文件夹,os.path.join函数用于连接文件夹路径和文件名。
- os.system函数用于执行命令,这里使用xcopy命令复制文件夹。
- with open语句用于打开文件,其中"r+"参数表示读写模式,readlines方法用于读取所有行,seek和truncate方法用于清空原文件内容并写入修改后的内容。
- 字符串格式化语法f"{...}"用于生成文件夹名和文件内容,其中{...:.2e}表示科学计数法格式化,保留2位小数。
- 运行可执行文件使用os.system函数,传入文件路径即可。