Как использовать подпроцесс popen Python

Так как os.popen заменяется на subprocess.popen, мне было интересно, как бы я преобразовал

os.popen('swfdump /tmp/filename.swf/ -d')

to subprocess.popen()

Я пробовал:

subprocess.Popen("swfdump /tmp/filename.swf -d")
subprocess.Popen("swfdump %s -d" % (filename))  # NOTE: filename is a variable
                                                # containing /tmp/filename.swf

Но я предполагаю, что я не правильно это записал. Любая помощь будет оценена по достоинству. Благодаря

Ответ 1

subprocess.Popen принимает список аргументов:

from subprocess import Popen, PIPE

process = Popen(['swfdump', '/tmp/filename.swf', '-d'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()

Там даже раздел документации, посвященный помощи пользователям в миграции от os.popen до subprocess.

Ответ 2

Используйте sh, это упростит:

import sh
print sh.swfdump("/tmp/filename.swf", "-d")