2016-10-31 4 views
0

Javaの ".jar"ファイルを出力するための最良の方法を知りたいPython変数。例えば
、のユーザーは、彼らが端末出力を変数に(javaからpythonへ) - ファイルを書くのではなくRAMに出力するための最良のコーディング慣行

java -jar FileProcessor.jar -i "input.txt" -o "output.txt"

でコマンドウィンドウ/端末で実行することができ、複雑なJavaパッケージは、(おそらく、ユーザーが書いていないと理解していないこと)が持っているとしましょうこの方法に類似のpythonでこれを呼び出し、変数に「output.txtと」を取得するためにそこ方法、:

proc = subprocess.Popen(['java', '-jar', 'FileProcessor.jar', '-i', 'sample.txt', '-o'], stdout=subprocess.PIPE) 
py_out = proc.stdout.read() 
print(py_out) 

問題はjavaファイルが-o後、出力ファイル"output.txt"を探すことを明らかに。

もちろん、私は他のアイデアを開いていますが、私は私の主なオプションを理解しては、以下のとおりです。

  1. subprocesscall/Popen?変数
  2. は、Javaパッケージ

のラッパーを書くログインするために標準出力を使用すると、これを達成するためのより良い方法はありますか?最初の方法は、多くの例が示すように簡単には動作しないように見えます。私は決してそうしていないので、Javaパッケージの周りにラッパーを書くことがどれほど難しいかわかりません。

+0

[一時ファイル](https://docs.python.org/2/library/tempfile.html)を使用しないのはなぜですか? –

+0

@chase答えを受け入れてくれてありがとう、私はウィンドウのケースを追加するためにそれを編集しました。私はあなたが選択したオプションとあなたのプラットフォームが何であるかに興味があります。 –

+0

私は今、実際に一時ファイルの "不正な"方法を行うことにしましたが、このシステムをもう少しテストした後は、 – chase

答えて

1

プログラムFileProcessor.jarに標準出力に出力する特別なケースがない場合は、できることは何もありません(しかし、一時ファイルに書き込んで、もう一度読みますが、それは浮気です:)。

-oオプションが省略された場合、または-oオプションが-(ダッシュ)の値を持つ場合、ほとんどのniceコマンド(Unixコマンド)はstdoutにデータをダンプします。

あなたはそれがコンソール上に書いています一方、それがファイルに書き込んだ信じるようにプログラムをだますことができ、あなたのプログラムを変更できない場合:

  1. のLinux/UNIX:

    • はと現在のttyを取得しますttyコマンド。

      • 使用CON標準出力
を読ん
  • 出力ファイル名として:例:
  • あなたのプログラムには、
  • Windowsの標準出力を読み込むこと/dev/pts/2

  • パス
  • 関連する問題