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

Python中如何将gcloud命令输出的URL正确追加到数组

问题根源

os.system()的返回值是命令的退出状态码,根本不是命令打印的内容:状态码为0代表命令执行成功,非0代表执行出错。
你运行gcloud时控制台看到的URL,是命令直接输出到终端的内容,从来没有被赋值给result_val变量,所以最后数组里存的全是代表执行成功的0。

修复方法

用Python官方推荐的subprocess模块替代os.system,直接捕获命令的标准输出内容即可,修正后的代码:

import subprocess

zone = ["z1", "z2", "z3"]
result_1 = []

for z in zone:
    # 传参用列表形式,避免字符串拼接的注入风险
    cmd = ["gcloud", "command1", z, "--command2"]
    # 捕获输出,自动转字符串,去除首尾多余空白/换行
    url = subprocess.check_output(cmd, text=True).strip()
    result_1.append(url)

print(result_1)

运行后就能得到你期望的URL数组:

["https://sample-domain.com/test/abc/1","https://sample-domain.com/test/abc/2","https://sample-domain.com/test/abc/3"]

补充说明:

  • 如果你用的Python版本低于3.7,把参数里的text=True替换成universal_newlines=True即可,效果完全一致
  • 不要用字符串拼接的方式拼shell命令,用列表传参可以自动处理特殊字符转义,避免命令注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:36:16