因此,当我在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不会收到任何其他消息,只会显示我打印的消息。但是,如果该包装不存在并引起错误,则错误和我的打印都将被打印在屏幕上。

有没有办法避免打印命令错误呢?

谢谢。

最佳答案

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


那就是显示错误的地方。

关于python - 如何避免在运行subprocess.call后显示错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53278466/

10-13 07:13