Stargazer07_ 2023-04-22 17:34 采纳率: 55.6%
浏览 65
已结题

python代码批量复制文件夹、变量命名文件夹,批量修改txt文本内容,批量依次执行指定路径下exe文件

需要一段python代码来解决如下问题,有没有人可以帮帮忙,十分感谢
已知条件:
1.一个存于D盘的名为”计算“文件夹,其中包含
input.txt
index.exe
tgs.exe
三个文件
2.变量I,存在的值有1 2 3 4;变量D,存在的值有100 200 300 400

需要代码完成的操作有:
1.批量复制文件夹“计算”到D盘目录下,并用变量I-D的形式重新命名,最终生成文件夹:计算1-100 计算1-200……计算4-300 计算4-400 共16个文件夹
2.修改上述16个文件夹下input.txt文件中的内容,具体为:修改第4行第4项(占11-12列)的原内容为D的30倍的结果,以及修改第10行的内容为(0.001*I×D/864)的结果(用科学计数法表示),其中I、D的值与其文件夹相互对应
3.依次运行16个文件夹中的index.exe文件,前一个运行完成后运行下一个,所有的均完成运行后,再以同样的方式依次运行tgs.exe

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-22 17:51
    关注

    基于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函数,传入文件路径即可。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计