You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python脚本从指定文件中读取传入的运行参数?

实现方案

修改后的完整代码

import sys
import subprocess

# 入参校验
if len(sys.argv) < 2:
    print("用法:python script.py file-with-arguments", file=sys.stderr)
    sys.exit(1)

# 读取参数文件内容
arg_file = sys.argv[1]
with open(arg_file, 'r', encoding='utf-8') as f:
    # 逐行处理,自动去掉首尾空白、过滤空行
    resource_names = [line.strip() for line in f if line.strip()]

for resource in resource_names:
    # 改用列表形式传参,规避shell注入风险,执行更稳定
    command = ["terraform", "taint", resource]
    p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    # 可选:添加错误提示,执行失败时快速定位问题
    if p.returncode != 0:
        print(f"资源 {resource} 处理失败,错误信息:{stderr.decode()}", file=sys.stderr)

print("执行完成,处理的资源列表:", resource_names)

改动说明

  • 新增入参校验逻辑,未传入参数文件路径时会先打印用法提示后退出,避免无意义报错
  • 读取传入的参数文件,逐行自动清理首尾换行、空格等空白字符,同时过滤文件中的空行
  • 优化subprocess调用逻辑,去掉shell=True参数改为直接传命令列表,避免特殊字符导致的注入风险和执行异常
  • 新增简易错误处理,执行terraform命令失败时会打印对应错误信息,方便排查问题

内容的提问来源于stack exchange,提问作者hock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:04