2011-07-28 14 views
1

Popenにパラメータ値を渡すにはどうすればよいですか?この作品のpythonコンソールから

convert -quality 100 in.pdf out.png 

が、私はこのように私のPythonスクリプトにそのコマンドを追加するとき:

Popen(['convert', '-quality 100', 'in.pdf', 'out.png']) 

を私が取得:

unrecognized option `-quality 100' 

私がいることを変更した場合パラメータに'-quality=100'私はまだエラーが発生します。実行しますが、out.pngを生成するために失敗した

Popen(['convert', '-quality', '100', 'in.pdf', 'out.png']) 

私はこのようにそれを修正しようとしました。

更新日:最新バージョンが動作しています。私はそれを元来誤解していたに違いない。

+1

あなたの最後の例はうまくいくはずですが、出力はありますか? – utdemir

+1

はい、現在動作しています。私は初めてそれをミスタイプする必要があります。 – ram1

+0

@ryaz: "最後のバージョンは動作しています"。あなた自身の質問に答えてください(それは問題ありません)。 –

答えて

4

すべての引数が独自のリスト要素を取得するため、2番目の変種は正しいです。

communicateへのコールが終了するまで、コマンドはまだ実行されている可能性があります(ただし、あなたのケースではそうではありません)。プログラムがエラー(不正な形式のPDFファイルなど)を検出したかどうかを調べるために、communicationを呼び出した後にreturncodeをチェックしてください。

また、imagemagick convertは、複数ページのPDFを複数のPNGファイルに書き出します(out-0.pngout-1.png)。それらが存在するかどうかを確認します。その動作を抑制するには-appendを使用してください。

import subprocess 
Popen = subprocess.Popen 
s = Popen(['convert', '-quality', '100', 'in.pdf', '-append', 'out.png']) 
s.communicate() 
if s.returncode != 0: 
    raise OSError('convert error') 
1

convertコマンドは、スクリプトの実行時に実行パスに存在する必要があります。引数にconvertへのフルパスを含めることはできますか?

Popen(['/path/to/convert', '-quality', '100', 'in.pdf', 'out.png']) 

'/ path/to/convert'を実際のパスに置き換えます。また、スクリプトを実行するアカウントに、現在のディレクトリでの読み取りと書き込みの権限があることを確認する必要があります。

+0

私は変換するリファレンスをハードコーディングするのは良い考えではないと思います。うまくいけば、これらのバイナリがパスに存在しなければ、プログラムは別のシステムでは動作しません。 – Whoopska

+0

@Whoopska: "うまくいけば"バイナリがパスにない場合でも、コードは正常に実行されません。理想的な状況は、a)コマンドの実行を試みる前にコマンドが存在するかどうかを判断するか、またはb)構成ファイルに "convert"するパスを置き、インストール中に確認または変更するようにユーザーに求めます。 –

+0

私はすべてのオペレーティングシステムについて証言することはできませんが、エラーコード127は '.returncode'のようなものでピックアップされたり、これをテストする際に' OSError'をキャッチしているようです。私はあなたに同意します、あなたの選択肢のどちらかがかなり理想的です。 – Whoopska

2

これは正常に動作します:

#! /usr/bin/python3.2 

from subprocess import Popen 

Popen (['convert', '-quality', '100', 'test.pdf', 'out.png']) 

Version: ImageMagick 6.6.2-6 2011-03-16 Q16 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC 
Features: OpenMP 

を使用するには、スクリプトがあなたin.pdfを見つけることができますが、よろしいですか?

関連する問題