因此,当我在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不会收到任何其他消息,只会显示我打印的消息。但是,如果该包装不存在并引起错误,则错误和我的打印都将被打印在屏幕上。
有没有办法避免打印命令错误?
谢谢。
答案 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):
显示错误的地方。