python - 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]
有什么建议么 ?
解决方案
我只想将第二个值分配给上述输出中启用的变量 get_version
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])
推荐阅读
- html - 目前在我的 html 页面上有 css 代码。我正在尝试将代码移动到 CSS 页面
- reactjs - 使用 react native 和 firebase 创建类似按钮
- javascript - 在 ChartsJS 中换行标签时工具提示中不需要的逗号
- python - 谁能告诉我如何使打印的屏幕变蓝?
- c++ - 对对象成员、对象内部、向量内部所做的更改不会在方法结束后继续存在。C++
- flutter - Flutter FlushBar 在显示时毫不犹豫地隐藏了顶部导航栏
- javascript - 使用 Mapbox 发送到客户端后无法设置标头
- php - PHP/MYSQLI 如何从表单内的 while 循环返回一个变量,以便在该表单的操作/方法中的 $_GET 请求中使用?
- css - React JS:如何在 react-spring 中使用响应式样式
- sql - 使用来自另一个表列的 JSON 格式的数据创建表