SubProcess.を使用して、オプションのパラメーターを渡しながらOS.TMPファイルを使用してPythonでポーペン

StackOverflow https://stackoverflow.com/questions/3896795

  •  29-09-2019
  •  | 
  •  

質問

私はLinuxでPythonプログラムを執筆しており、その一部ではPDFTOTEXT Execupabilを実行して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」などに置き換えようとしました。それらはすべて私に空のテキストを与えます。入力はTempファイルを介して配管されているため、引数リストを把握するのに苦労しています。 Popenのドキュメントのほとんどは、すべてのパラメーターが引数リストを介して渡されていると想定していますが、私の場合、入力はTEMPファイルを介して渡されています。

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

役に立ちましたか?

解決

これは私にとってはうまくいきます:

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

私は男のページで明示的な確認を見つけることができませんでしたが、私は最初は信じています - 言う pdftotext 期待する PDF-file Stdinから来て、2番目 - 言う pdftotext 期待する text-file stdoutに送られます。

他のヒント

shell = trueで文字列で完全なコマンドを渡すことができます:

out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top