2011-04-12 58 views
0

如何隐藏在python中运行时安装java(apt-get openjdk-6-jre)的过程? 因此,我可以用 “安装Java ...”替换它,直到它准备就绪。在python中隐藏apt-get的回声

在此先感谢。

+0

[抑制输出的模块调用外部库]可能的副本(http://stackoverflow.com/questions/4178614/suppressing-output-of-module-calling-outside-library) – 2011-04-12 14:41:30

+1

您可以使用'subprocess'或其他像那样产生一个新的过程?如果是,只需执行'>/dev/null 2>&1'并打印任何你想要的。 – khachik 2011-04-12 14:42:39

回答

1
proc = subprocess.Popen('apt-get install openjdk-6-jre', stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE) 
output, errors = proc.communicate() 
return_Value = proc.returncode 

这会将程序输出转换为Python中的字符串,您应该在其中检查错误。见subprocess docs。 (不像重定向到/ dev/null的,这是跨平台的。)

+0

但是'apt-get'不是。 – 2011-04-12 15:06:25

+0

'os.devnull'是跨平台的。 – jfs 2011-04-12 15:50:43

2

这里的@ khachik的评论的实现:

import os 
from subprocess import STDOUT, check_call 

check_call(['apt-get', 'install', 'openjdk-6-jre'], 
      stdout=open(os.devnull,'wb'), stderr=STDOUT) 

它抛出一个异常在错误的情况下。