Оболочка подпроцесса Python = истинное сообщение об ошибке - PullRequest
0 голосов
/ 20 января 2019

Я использую подпроцесс в Python 3 для использования команд операционной системы (я на Ubuntu 18.04), и мне было интересно, есть ли возможность сделать пользовательское сообщение об ошибке, в то время как shell = True

import subprocess
command = str('wrong')
try:
   grepOut = subprocess.check_output(command, shell=True)
except subprocess.CalledProcessError as grepexc:
    print("oops! wrong command")

Когда я запускаю его, я получаю:

/bin/sh: 1: wrong: not found
oops! wrong command

есть ли способ удалить сообщение "/ bin / sh: 1: неправильный: не найдено" и просто "oops! Неправильная команда"?

1 Ответ

0 голосов
/ 20 января 2019

Вы можете подавить сообщение об ошибке оболочки, перенаправив stderr, и вставить свое собственное, используя check_output вместо call:

import subprocess
import os

command = str('wrong command')
devnull = open(os.devnull, 'w')

try:
    output = subprocess.check_output(command, shell=True, stderr=devnull)
except subprocess.CalledProcessError:
    print("oops! wrong command")
    output = ""

print(output)
...