Dado que os.popen está siendo reemplazado por subprocess.popen, me preguntaba cómo convertiría
os.popen('swfdump /tmp/filename.swf/ -d')
a subprocess.popen ()
Lo intenté:
subprocess.Popen("swfdump /tmp/filename.swf -d")
subprocess.Popen("swfdump %s -d" % (filename)) # NOTE: filename is a variable
# containing /tmp/filename.swf
Pero supongo que no estoy escribiendo esto correctamente. Cualquier ayuda sería apreciada. Gracias
python
subprocess
popen
Estúpido gato gordo
fuente
fuente

Respuestas:
subprocess.Popentoma una lista de argumentos:Incluso hay una sección de la documentación dedicada a ayudar a los usuarios a migrar de
os.popenasubprocess.fuente
shell=Truees no recomendable.filename.swf; rm -rf /el valor del nombre de archivo. Sin embargo, esto es solo un problema cuando el contenido de su argumento para Popen es inseguro.shell=Trueexcepto cuando se usa una entrada que no es de confianza . Simplemente decir queshell=Trueno se recomienda es engañoso.shell=True, pero cualquier usuario aleatorio que se encuentre con esta pregunta podría no serlo. Por eso creo que es importante destacar queshell=Truede hecho no se recomienda, a menos que sepas exactamente lo que estás haciendo.shutil.rmtreepor ejemplo. Pero eso no tiene nada que ver con si están incluidos en stdlib o no. Creo que la filosofía de UNIX de "Unix no fue diseñada para evitar que sus usuarios hagan cosas estúpidas, ya que eso también les impediría hacer cosas inteligentes". también se aplica en gran parte a Python.Usa sh , te facilitará mucho las cosas:
fuente
¡Usando Subprocess de la manera más fácil!
fuente