os.popen() 方法之间有什么区别?

7 投票
3 回答
4850 浏览
提问于 2025-04-11 19:42

我在查看Python的文档时,发现有4到5种不同版本的popen(),比如os.popen()、os.popen2()等等。

除了有些版本包含stderr(错误输出),而有些则不包含之外,它们之间还有什么区别呢?在什么情况下应该使用每一种?文档里并没有很好地解释这些。

3 个回答

10

popen2 这个函数不能捕捉到标准错误信息,而 popen3 可以捕捉到标准错误信息,并且为它提供了一个独立的文件句柄。最后,popen4 也能捕捉标准错误信息,但它把标准错误和标准输出放在同一个文件对象里。

13

我建议使用 subprocess 模块,因为它拥有这些函数的所有功能,还有更多其他的功能。

16

Jason说得对。为了让大家更容易理解,下面是一个简单的总结:

  • os.popen() -> 只获取输出
  • os.popen2() -> 获取输入和输出
  • os.popen3() -> 获取输入、输出和错误信息
  • os.popen4() -> 获取输入,以及输出和错误信息一起

撰写回答