gpt4 book ai didi

python - 如何捕获从 python 子进程运行的 git clone 命令的输出

转载 作者:行者123 更新时间:2023-12-04 01:53:20 25 4
gpt4 key购买 nike

我正在尝试运行 git clone命令使用 subprocess.check_output()这样我就可以验证它是否成功克隆,但它的抛出错误。

Command 'git clone <url>' returned non-zero exit status 128

我在做:
resp = subprocess.check_output('git clone <url>', shell=True)

我如何获得 git clone 的输出,以便我可以验证它是否正常工作,并且可以捕获任何错误(如果有)。

谢谢

最佳答案

因此,读取子进程输出的最佳方法是使用 subprocess.PIPE .例如

import subprocess
from collections import namedtuple

def git_clone(url):
process = subprocess.Popen(['git', 'clone', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return namedtuple('Std', 'out, err')(process.stdout.read(), process.stderr.read())

# test on fake url
out, err = git_clone('http://fake.url')
print('out = {}\nerr = {}'.format(out, err)

输出:
out = b''
err = b"Cloning into 'fake.url'...\nfatal: unable to access 'http://fake.url/': Couldn't resolve host 'fake.url'\n"

因此,您可以通过将函数更改为来测试成功
from warnings import warn

def git_clone(url):

process = subprocess.Popen(['git', 'clone', url], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

if not process.stdout.read():
warn(process.stderr.read())
return False

return True

关于python - 如何捕获从 python 子进程运行的 git clone 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51962673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com