如何让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
相关产品推荐
相关产品推荐

