检查命令是否产生输出

时间:2009-08-10 18:25:58

标签: python unix scripting

我正在使用以下调用对Python中的某些字符串执行'aspell'命令:

r,w,e = popen2.popen3("echo " +str(m[i]) + " | aspell -l")

我想测试查看stdout文件对象r的函数是否成功。如果没有输出,则命令成功。

在Python中测试它的最佳方法是什么? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

最好是使用标准Python库的subprocess模块,请参阅here - popen2已旧,不推荐使用。

无论如何,在您的代码中,if r.read(1):是一种快速测试r中是否有任何内容的方法(如果您不关心该内容可能具体是什么)。

答案 1 :(得分:2)

为什么不使用aspell -a

您可以使用Alex指示的子流程,但保持管道打开。关注the directions使用aspell的管道API,它应该非常有效。

好处是你不必检查空行。您可以随时阅读stdout,知道您会得到回复。这可以解决很多有问题的竞争条件。