我正在尝试使用python subprocess. 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.
您的输出和发生时间的描述会告诉您确切的错误是什么。
git commit
将在没有要提交的文件时返回非零退出状态代码,因此您得到:
subprocess.CalledProcessError: Command 'git commit -m "all"' returned non-zero exit status 1.
您必须先检查是否有文件要提交。例如,通过快速搜索-您可以使用this线程中的解决方案。
虽然我会去处理错误。也许创建一个处理程序,为不同的命令打印不同的错误消息?