subprocess.call выполняется успешно, но check_output завершается неудачно из-за состояния завершения запускаемой программы - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть следующее:

subprocess.call(['trufflehog', '/Users/myuser/workspace/somedir']) #this works
subprocess.check_output(['trufflehog', '/Users/myuser/workspace/somedir']) #this fails

subprocess.CalledProcessError: Command '['trufflehog', '/Users/myuser/workspace/somedir']' returned non-zero exit status 1.

По некоторым причинам check_output не работает, но вызов работает нормально. Но проблема с .call в том, что он на самом деле не сохраняет мой вывод, он просто печатает его в стандартный вывод и возвращает код состояния. Как я могу получить выход трюфеля?

1 Ответ

0 голосов
/ 01 февраля 2020

Я нашел это: https://github.com/dxa4481/truffleHog/issues/87

Trufflehog возвращает код выхода 1, когда находит секреты, и 0, когда ничего не находит, AKA "Чистый код". Я предполагаю, что они хотят, чтобы вы могли выполнить эту команду над многими каталогами / репозиториями и потерпеть неудачу, как только она обнаружит секреты.

Если вы хотите получить вывод команды, вы можете сделать:

import subprocess

output = subprocess.Popen(['trufflehog', '/Users/myuser/workspace/somedir'], shell=True, stdout=subprocess.PIPE).communicate()[0]

print(output)

* Обязательно поймите последствия безопасности shell=True

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