首页 > 解决方案 > Python:将输出行中的第二个值分配给变量

问题描述

我有以下几行python代码

import subprocess
buckets = open('permissions.txt', 'r')
for x in buckets:
   get_version = ['gsutil', 'versioning', 'get', x]
   get_version = subprocess.check_output(get_version)
   print (get_version)
   if get_version == "Enabled":
       print "Versioning already enabled on" (x)
   else:
       version_on = ['gsutil', 'versioning', 'set', 'on', x]
    

print第6 行的输出 print (get_version)如下:

   gs://xxxxxxx.appspot.com: Enabled
   gs://xxxxxxxx_cloudbuild: Enabled

我只想将第二个值分配给get_version上述输出中的变量,Enabled以便可以将其与if下一行的语句进行比较code

我尝试使用以下代码,但我认为它仅适用于逗号分隔值

  get_version = subprocess.check_output(get_version)[1]

有什么建议么 ?

标签: pythonlist

解决方案


我只想将第二个值分配给上述输出中启用的变量 get_version

根据以下文档check_output()

subprocess.check_output(args,*,stdin=None,stderr=None,shell=False,universal_newlines=False)

使用参数运行命令并将其输出作为字节字符串返回。

返回值是单个字符串,因此没有“第二个值”。您需要解析字符串以获取所需的字符。

我尝试使用以下代码,但我认为它仅适用于逗号分隔值

get_version = subprocess.check_output(get_version)[1]

这是一次体面的尝试。但是,它给出了字符串中的第二个字符,这不是您想要的。相反,您需要做更多的工作。在这种情况下,您需要该split()函数来解析字符串中的“单词”:

results = get_version.split()

现在您可以索引results

print(results[1])

我建议您熟悉标准的字符串方法,这样您就知道在需要时可以使用哪些工具。

不请自来的建议:

看一下这段代码:

   get_version = ['gsutil', 'versioning', 'get', x]
   get_version = subprocess.check_output(get_version)

在这里,您重用相同的变量来表示不同的事物。一般来说,这不是一个好主意,因为当您稍后回到这段代码时,它可能会令人困惑。我建议你想出两个单独的名称来准确描述每件事是什么:

   command = ['gsutil', 'versioning', 'get', x]
   output = subprocess.check_output(command)

那么我上面的解决方案就变成了:

results = output.split()
print(results[1])

推荐阅读