Python - os.popen和subprocess.Popen有什么区别?

4

Python - os.popen 和 subprocess.Popen 有什么区别?

1个回答

6
os进程功能被认为已经过时。在Python 2.4中引入了subprocess模块,作为几个旧模块和函数的统一、更强大的替代品,与子进程有关。它们列在这里
  • os.system
  • os.spawn*
  • os.popen*
  • popen2.*
  • commands.*
os.popen在Python 2.6中被弃用(但有趣的是,在Python 3中它没有被弃用,它是通过subprocess.Popen实现的)。文档中有一段关于如何使用subprocess.Popen替换它的段落

// 如果操作系统进程功能越来越过时,那么像 os.getcwd()os.chdir()os.path 这样的方法将被哪些 subprocess 的新技术所取代? - Nathan Basanese
1
@NathanBasanese 这些不是进程函数。subprocess 模块仅涉及子进程,它并不能替代整个 os 模块。 - Felix Dombek
@techtonik 这是真的,我添加了一些信息。 - Felix Dombek
可能os.popen在Python 3中没有被弃用的原因是性能 - http://essays.ajs.com/2011/02/python-subprocess-vs-ospopen-overhead.html - anatoly techtonik
在Python 3中,它使用subprocess.Popen实现,因此可能会更慢,而且明显不如强大。 - Felix Dombek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接