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

Python3.8调用subprocess执行ansible命令时字符串格式化报错如何解决

报错原因

报错属于基础的字符串格式化语法错误,和subprocess调用本身无关。
%格式化运算符仅作用于紧邻它的前一个字符串对象,你现有写法中,格式化参数(url, vm_id)绑定的是没有任何占位符的字符串"playbook.yml",而真正带有2个%s占位符的"%s:22%s,"没有对应的参数填入,因此触发TypeError: not all arguments converted during string formatting。

修正方案

推荐使用Python3.6+支持的f-string写法,可读性更高:

print('\nProvisiong VM with ansible')
print(url)
print(vm_id)
output = subprocess.run([
    "ansible-playbook",
    "-i",
    f"{url}:22{vm_id},",
    "-e",
    "ansible_user=ubuntu",
    "playbook.yml"
])
print(output)

如果要沿用原有的%格式化写法,调整格式化的绑定位置即可:

output = subprocess.run([
    "ansible-playbook",
    "-i",
    "%s:22%s," % (url, vm_id),
    "-e",
    "ansible_user=ubuntu",
    "playbook.yml"
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:48:00