'subprocess.check_output正在抛出错误第356行和第438行'

2024-04-20 09:51:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pythonsubprocess. check_output命令编写git hub的pull、push和status命令,如下所示。有人能让我知道这些错误是什么,我怎样才能顺利地执行这个脚本。只有当没有更多的文件要提交时才会发生这种情况。你知道吗

import os
from subprocess import check_output

gitzap =['git pull','git add *','git commit -m "all"','git push','git status']

for command in gitzap:
    #print (command)
    # executioner = os.system(command).pop()
    executioner = check_output(command, stdin=None, stderr=None, shell=True,
                               universal_newlines=True, timeout=None, encoding='utf-8')
    print ('\n' + str(command) + '\n***************success***************\n')
    print (str(executioner))

输出如下:

~/documents/github/goodcode/githelpcommands $gitzap

git pull
***************success***************

Already up to date.


git add *
***************success***************


Traceback (most recent call last):
  File "/home/xxxxxxxxxx/documents/github/goodcode/githelpcommands/gitzap.py", line 10, in <module>
    executioner = check_output(command, stdin=None, stderr=None, shell=True, universal_newlines=True, timeout=None, encoding='utf-8')
  File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.6/subprocess.py", line 438, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'git commit -m "all"' returned non-zero exit status 1.

Tags: ingitnonetrueoutputcheckstatusstderr
1条回答
网友
1楼 · 发布于 2024-04-20 09:51:04

你的输出和它发生时的描述告诉你错误是什么。你知道吗

git commit当没有要提交的文件时,将返回一个非零的退出状态代码,因此得到:

subprocess.CalledProcessError: Command 'git commit -m "all"' returned non-zero exit status 1.

您必须先检查是否有要提交的文件。例如,通过快速搜索-可以使用来自this线程的解决方案。你知道吗

不过,我还是会去处理这个错误。或许可以创建一个处理程序,为不同的命令打印不同的错误消息?你知道吗

相关问题 更多 >