subprocess.check_ouput выплевывает ошибки строка 356 и строка 438 - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь создать сценарий для команд git hub pull, push и status с помощью команды python subprocess. check_output, как показано ниже. Может кто-нибудь, пожалуйста, дайте мне знать, что это за ошибки и как я могу беспрепятственно выполнить этот скрипт. Это происходит только тогда, когда больше нет файлов для фиксации.

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.

1 Ответ

0 голосов
/ 26 октября 2019

Ваш вывод и описание того, когда это произойдет, точно скажут, в чем заключается ошибка.

git commit вернет ненулевой код состояния выхода, когда нет файлов для фиксации, поэтому вы получите:

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

Вы должны проверить, есть ли файлы для фиксации в первую очередь. Например, быстро погугливая - вы можете использовать решение из этого потока.

Я бы все же вместо этого обработал ошибку. Возможно, создать обработчик, который печатает разные сообщения об ошибках для разных команд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...