我正在使用azure CLI来围绕回购创建等构建一些自动化。我正在使用python作为各种CLI命令的包装器来捆绑自动化。我想写一个简单的检查,看看回购名称是否已经使用并存在。
repoName来自系统输入,可以是用户想要命名其新存储库的名称。
到目前为止,我有这个:
azRepoListCmd = "az repos list --query "[?contains(name, '" + repoName + "')].[name]" --organization https://myOrganizationHere.visualstudio.com/ --project myProject -o tsv"
azRepoList = os.system(azRepoListCmd)
print(azRepoList)
以上返回的是:
test-project-2
0
这是什么;0";它是从哪里来的?如果找不到任何内容,则预期结果将只是名称或空数组。
0
是运行os.system
的结果代码,它不捕获输出。
https://docs.python.org/3/library/os.html#os.system
因此,您的azRepoList = ...
行实际上是输出repo名称的行,然后下一行输出结果代码。
相反,您想要的是子流程。
import subprocess as sp
output = sp.getoutput("az repos list --query "[?contains(name, 'PartsUnlimited')].[name]" --project "Parts Unlimited" -o tsv")
print (output)
PartsUnlimited