繁体   English   中英

在 Python 中打印 bash 脚本输出

[英]Print bash script output in Python

我有一个将运行脚本文件的 Python 代码。脚本文件将输出特定 git 存储库的版本标记。

我的名为“start.sh”的脚本文件如下:

#!/bin/sh
git clone https://xxxxxxxxxx:x-oauth-basic@github.com/xxxxxxx/xxxxx.git
cd xxxxxxxx
git config --global user.email "xxxxxxxx"
git config --global user.name "xxxxxxxxx"
IMAGE_TAG=`echo \`git describe --tags\``
echo $IMAGE_TAG

我的Python代码如下:

import os
git_tag = os.popen('sh start.sh')
print(git_tag)

当我单独运行脚本文件时,它会返回 git 标签。 但是,每当我尝试在 Python 代码中打印它时,它都不起作用。

我该如何解决这个问题?

由于您无论如何都在使用 Python,因此您可以考虑使用GitPython作为替代方案。 您可以列出所有标签:

from git import Repo
repo = Repo("path/to/repo")
print(repo.tags)

像这样尝试

from subprocess import check_output
out = check_output(['sh', 'start.sh'])
print(out)

根据python 的文档,os.popen() 函数自 2.6 版以来已被弃用。 您可能想要使用subprocess模块。

PS:我想发表评论,但不能因此得到这个答案。

对于python3-X

from subprocess
git_tag = subprocess.run(['sh', 'start.sh'], capture_output=True, text=True)
print(git_tag.stdout)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM