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

Ansible调用Python脚本传参报错:TypeError类型不匹配问题排查

问题原因与修复方案

核心错误点

  1. sys.argv索引错误:sys.argv[0]返回的是脚本自身的路径/文件名,并非你传入的第一个字符串参数。你实际传入的三个参数对应sys.argv[1](字符串)、sys.argv[2](max_retries)、sys.argv[3](attempt_number)。
  2. 参数类型未转换:命令行传入的所有参数都是字符串类型,直接用%d格式化整数会触发类型错误,必须先将数字参数转为整数类型。
  3. 缺少sys模块导入:原脚本未导入sys模块,会导致NameError。

修改后的Python脚本(script.py)

import sys

# 修正参数索引,转换数字参数类型
input_str = sys.argv[1]
max_retries = int(sys.argv[2])
current_attempt = int(sys.argv[3])

print("String %s" % input_str)
print("Num1 %d" % max_retries)
print("Num2 %d" % current_attempt)

额外说明

  • Ansible Playbook部分无需修改,attempt_number | int已经确保传递的是数字格式的字符串,脚本内转int即可完成类型匹配。
  • 若环境默认使用Python3,print语句需保留括号(上述脚本已兼容),避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:24