2012-04-24 44 views
1

看到这个简单的代码:简单。 *在Python中调用*函数。如何解决退货问题?

$ python 
>>> from subprocess import * 
>>> call(['echo','Hi']) 
Hi 
0 

我的问题看起来很简单。在呼叫结束时,我不想要这个。 调用所调用的每个函数都会与此一起出现,这会混淆有条件测试的内容。

喜欢的东西:

if int(call(['function', 'parameter']))>10: 
    print 'yes' 

所以我怎么能在这个例子中只接收

Hi 

+1

你只能看到在REPL了'0'('回声“Hi''返回'0'表明成功) ,但是你可以通过分配它来抑制'subprocess.call'的stdout,或者抑制你真的想要的东西:http://stackoverflow.com/questions/699325/suppress-output-in-python-calls-to-executables – birryree 2012-04-24 00:27:50

回答

2

你想用POPEN与communicate,在该文档中描述:

>>> from subprocess import * 
>>> Popen(['echo', 'Hi'], stdout=PIPE).communicate()[0] 
'Hi\n' 
+0

这工作thx。 – GarouDan 2012-04-24 00:41:02

2

您看到的值是echo过程的返回值。由于您处于活动解释器中,因此将此返回值打印到终端。您可以通过将其分配到一个虚拟变量,忽略它:

_ = call(['echo','Hi']) 

只是确保你知道你可以只写print("Hi"),对不对?

+0

是的,这是工作^^。几乎。我如何设置一个变量的结果? '>>> a = _ = call(['echo','Hi'])'给出'>>> a''0',我想要>>>>''嗨。 – GarouDan 2012-04-24 00:31:51

+0

yes('print'Hi''),但是我需要从我的一个函数中进行回调,该函数在条件测试中具有特定的返回值。 – GarouDan 2012-04-24 00:37:00