Como os.popen está sendo substituído por subprocess.popen, eu queria saber como converteria
os.popen('swfdump /tmp/filename.swf/ -d')
para subprocess.popen ()
Eu tentei:
subprocess.Popen("swfdump /tmp/filename.swf -d")
subprocess.Popen("swfdump %s -d" % (filename)) # NOTE: filename is a variable
# containing /tmp/filename.swf
Mas acho que não estou escrevendo isso corretamente. Qualquer ajuda seria apreciada. obrigado
python
subprocess
popen
Stupid.Fat.Cat
fonte
fonte
Respostas:
subprocess.Popen
leva uma lista de argumentos:Há até uma seção da documentação dedicada a ajudar os usuários a migrar de
os.popen
parasubprocess
.fonte
shell=True
é recomendado.filename.swf; rm -rf /
o valor do nome do arquivo. No entanto, isso é apenas um problema, quando o conteúdo de seu argumento para Popen é inseguro.shell=True
exceto ao usar entrada não confiável . Afirmar simplesmente queshell=True
não é recomendado é enganoso.shell=True
, mas qualquer usuário aleatório que encontrar essa questão pode não estar. É por isso que acho importante destacar queshell=True
na verdade não é recomendado, a menos que você saiba exatamente o que está fazendo.shutil.rmtree
por exemplo. Mas isso não tem nada a ver com o fato de estarem incluídos no stdlib ou não. Acredito que a filosofia UNIX de "Unix não foi projetado para impedir seus usuários de fazer coisas estúpidas, pois isso também os impediria de fazer coisas inteligentes." também se aplica em grande parte ao Python.Use sh , vai tornar as coisas muito mais fáceis:
fonte
Usando Subprocess da maneira mais fácil !!
fonte