Как избежать отображения ошибок, вызванных после запуска subprocess.call - PullRequest
0 голосов
/ 13 ноября 2018

Поэтому, когда я запускаю subprocess.call в python, после запуска скрипта, если есть сообщения об ошибках, вызванные bash, я бы не хотел отображать его пользователю.
Так, например,

for i in range(len(official_links)):
    if(subprocess.call('pacman ' + '-Qi ' + official_links[i].replace('https://www.archlinux.org/packages/?q=', ''),shell=True, stdout=subprocess.PIPE) == 0):
        print(official_links[i].replace('https://www.archlinux.org/packages/?q=', '') + ' installed')
    else:
        print(official_links[i].replace('https://www.archlinux.org/packages/?q=', '') + ' not installed')

команда pacman -Qi packagename проверяет, установлено ли имя пакета или нет.Когда я запускаю свой скрипт, если он установлен, я не получаю никаких дополнительных сообщений от bash, только то, что я печатаю.Но если пакет не существует и возникает ошибка, на экране выводится и ошибка, и мой отпечаток.

Есть ли способ избежать ошибок печати команд?

Спасибо.

1 Ответ

0 голосов
/ 13 ноября 2018

Перенаправьте также stderr:

if(subprocess.call('pacman ' + '-Qi ' + official_links[i].replace('https://www.archlinux.org/packages/?q=', ''),shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0):

Вот где отображается ошибка.

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