У меня есть скрипт на Python, который проходит несколько проверок. Одна из проверок заключается в том, чтобы убедиться, что результат не включает ключевое слово, выполнив команду grep для ключевого слова и убедившись, что нет вывода. При чтении справочной страницы grep ожидаемый код выхода равен 1. Но с точки зрения пользователя проверка пройдена, поскольку ключевое слово отсутствует. Есть ли способ вернуть статус выхода 0 для grep без команд сопоставления, чтобы он не обрабатывался как исключение или каким-либо другим способом избежать его обработки как исключения? Обратите внимание, что пользователи будут создавать командный файл, поэтому я не могу полностью отказаться от использования grep.
import subprocess
def cmd_test(command):
try:
cmd_output = subprocess.check_output(command,
stderr=subprocess.STDOUT,
shell=True,
timeout=120,
universal_newlines=False).decode('utf-8')
except subprocess.CalledProcessError as exc:
return (exc)
else:
return cmd_output.strip()
print(cmd_test('env | grep bash'))
print(cmd_test('env | grep test'))
print(cmd_test('env | grep bash'))
print(cmd_test('env | grep test'))
Выход:
SHELL=/bin/bash
Command 'env | grep test' returned non-zero exit status 1 b''
Popen
напрямую вместоcheck_foo()
- person o11c   schedule 25.08.2017