¿Está os.popen realmente en desuso en Python 2.6?

La documentación en línea indica que os.popen ahora está en desuso. Todas las demás funciones en desuso aumentan debidamente una Advertencia de Depredación. Por ejemplo:

>>> 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] 

La función os.popen, por otro lado, se completa silenciosamente:

 >>>len(list(os.popen('ps h -eo pid:1,command'))) 202 

Sin dar una advertencia. De los tres escenarios posibles.

  1. Es de esperar que la documentación y la biblioteca estándar tengan ideas diferentes de lo que está en desuso;
  2. Hay un error en la documentación y os.popen no está en desuso;
  3. Hay un error en la biblioteca estándar y os.popen debería mostrar una advertencia;

¿Cuál es el correcto?

Para información de fondo, aquí está el Python que estoy usando:

 >>> 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)] 

El argumento de os.popen se toma de una de mis respuestas aquí en Stack Overflow.

Anexo : Gracias a Cobbal a continuación , resulta que os.popen no está en desuso en Python 3.1, después de todo.

Aquí está el 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 

Una cosa en la que puedo pensar es que os.popen existe en python3, mientras que os.popen2 no lo hace. Así que uno está “más en desuso” que el otro, y está progtwigdo para una eliminación más temprana del idioma.

Mientras tanto, he abierto un ticket en el rastreador de problemas de Python. Mantendré esta pregunta abierta hasta que se cierre el boleto.

command.getstatusoutput todavía lo usa de acuerdo con la documentación 2.6.4.