联机documentation表示os.popen现已弃用。所有其他已弃用的函数都会适当地提高DeprecationWarning。例如:
>>> import os
>>> [c.close() for c in os.popen2('ps h -eo pid:1,command')]
__main__:1: DeprecationWarning: os.popen2 is deprecated. Use the subprocess module.
[None, None]
另一方面,函数os.popen以静默方式完成:
>>>len(list(os.popen('ps h -eo pid:1,command')))
202
不提出警告。在三种可能的情景中
哪一个是正确的?
有关背景信息,请参阅我正在使用的Python:
>>> import sys
>>> print sys.version
2.6.2 (r262:71600, May 12 2009, 10:57:01)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)]
os.popen的参数取自Stack Overflow上的reply of mine。
附录:感谢cobbal below,事实证明,在Python 3.1中,os.popen并没有被弃用。
答案 0 :(得分:5)
这是PEP。
Deprecated modules and functions in the standard library: - buildtools - cfmfile - commands.getstatus() - macostools.touched() - md5 - MimeWriter - mimify - popen2, os.popen[234]() - posixfile - sets - sha
答案 1 :(得分:4)
我能想到的一件事是os.popen存在于python 3中,而os.popen2则不存在。因此,一个人比另一个人“更加弃用”,并计划尽快从该语言中删除。
答案 2 :(得分:3)
与此同时,我在Python问题跟踪器上打开了ticket。在门票关闭之前,我会保持这个问题。
答案 3 :(得分:0)
commands.getstatusoutput仍然根据2.6.4文档使用它。