2014-04-15 27 views
0

基本上,我送一个命令,象这样:如何防止命令行返回的字符串从印刷

proc = subprocess.Popen("ls",stdout=subprocess.PIPE) 
tmpStr = proc.stdout.read() 

这工作得很好,但它也打印tmpStr到屏幕上,这是我不想要的。我怎样才能防止这一点?

+0

我在这里尝试相同的代码,但它并没有显示任何信息,除非我称之为“印tmpStr”直接... – joaoricardo000

+0

我有同样的经历作为@ JRicardo000。这是你正在使用的确切例子吗?你在使用什么平台?是否有可能实际运行的命令是将某些内容打印到stderr而不是stdout? – dano

+0

@dano提到,你正在捕获stdout而不是stderr。所以,你仍然会看到像“没有这样的文件或目录”的错误消息。你的例子不太可能出错...但通常你会想包含'stderr = subprocess.STDOUT'或类似的东西。 – tdelaney

回答

0

它可能只是打印,因为你通过一个交互式提示符下键入其上运行的命令。如果您将该代码放入一个文件并执行它,tmpStr将不会被打印出来。

+0

好猜测,但如果它是_exact_命令时,它不会在REPL打印,因为相关的最后一条语句分配结果。 –

+0

@BurhanKhalid:你可能是对的。我的猜测是,他在一些非显而易见的shell中运行这个shell,它会在运行时打印每个命令的结果。 –

+0

我是个白痴。就是这样。 –