如何避免显示运行subprocess.call后引起的错误

时间:2018-11-13 10:05:00

标签: python bash subprocess

因此,当我在python中运行subprocess.call时,在运行脚本后,如果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 :(得分:2)

也重定向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):

显示错误的地方。