4

Python で一連の複雑な Imagemagick コマンドを使用するスクリプトを作成しています。このようなものをどのように呼ぶべきか疑問に思っています...

convert 1.png \( +clone -background black -shadow 110x1+9+9 \) +swap -background none -layers merge +repage 2.png

サブプロセスを使用して単純なコマンドを呼び出すのはまったく問題ありませんが、実行順序 (エスケープされた括弧) を指定する方法はまだわかりません。

確かに os.system または commands モジュールを使用できますが、これらは言語を離れているため、subprocess を使用することをお勧めします。

4

1 に答える 1

2

はい、使用しますsubprocess。に与える引数のリストの個別の項目に各引数を入れるだけですPopen

subprocess.Popen(['convert', '1.png', '(', '+clone', '-background', 'black', '-shadow', '110x1+9+9',
                  ')', '+swap', '-background', 'none', '-layers', 'merge', '+repage', '2.png'],
                 otherargments=values, etc=etc)

引数の順序を変更する必要がある場合に備えて、その引数リストを事前に作成することもできます。

これはシェルによって解釈されないため、引数のエスケープを行う必要はありません (引数内のスペース、または "(" や ")" などの他の特殊なシェル文字など)。

于 2012-05-14T16:01:46.417 に答える