0

私はLinuxでPythonプログラムを作成しており、その一部でpdftotext実行可能ファイルを実行してPDFテキストを変換しています。私が現在使用しているコードを以下に示します。

pdfData = currentPDF.read()

tf = os.tmpfile()
tf.write(pdfData)
tf.seek(0)

out, err = subprocess.Popen(["pdftotext", "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()

これは正常に機能しますが、-layoutオプションを指定してpdftotext実行可能ファイルを実行したいと思います(ドキュメントのレイアウトを保持します)。「-」をレイアウトに置き換えたり、「pdftotext」を「pdftotext-layout」に置き換えたりしてみました。いずれも機能しません。それらはすべて私に空のテキストを与えます。入力は一時ファイルを介してパイプされているため、引数リストを理解するのに問題があります。Popenに関するほとんどのドキュメントは、すべてのパラメーターが引数リストを介して渡されることを前提としていますが、私の場合、入力は一時ファイルを介して渡されます。

どんな助けでも大歓迎です。

4

2 に答える 2

2

これは私のために働く:

out, err = subprocess.Popen(
    ["pdftotext", '-layout', "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()

マニュアルページで明示的な確認を見つけることができませんでしたが、最初はstdin から来ることを期待するように-伝え、2 番目はstdout に送信されることを期待するように伝えていると思います。pdftotextPDF-file-pdftotexttext-file

于 2010-10-09T18:25:22.320 に答える
0

shell=True を使用して、完全なコマンドを文字列で渡すことができます。

out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate()
于 2010-10-09T18:11:00.287 に答える