web-dev-qa-db-ja.com

サブプロセスpopen Pythonの使用方法

Os.popenがsubprocess.popenに置き換えられているため、どのように変換するのか疑問に思っていました

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

subprocess.popen()へ

私は試した:

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

しかし、私はこれを適切に記述していないと思います。任意の助けをいただければ幸いです。ありがとう

81
Stupid.Fat.Cat

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に移行するのを支援することに専念する ドキュメントのセクション もあります。

114
Blender

sh を使用すると、物事がずっと簡単になります。

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