私が取り組んでいるJavaプロジェクトには.bat
ファイルと.sh
ファイルがあり、プロジェクトの実行にはCLASSPATH
が作成されています。 (ウィンドウの場合は.bat
、残りの場合は.sh
)。Pythonから.batファイルに構築されたCLASSPATHを取得します
私はこれらのスクリプトで作成されたクラスパスにアクセスする必要のあるPythonスクリプトを作成しています.1つは.sh
(Linuxの場合)、もう1つは.bat
(Windowsの場合)です。
Popen(['bash', '-c', '. mkcp.sh && echo $CLASSPATH'], stdout=sp.PIPE).communicate()[0].strip()
そして、私はWindows上でこれを行うための同等の方法を把握することはできません。
現在、私は、Linuxのためにこれをやっています。これまでのところ私はこの
check_output(['cmd', '/c', 'call mkcp.bat && echo %CLASSPATH%'])
を作ってみた。しかし、それは標準出力にmkcp.bat
ファイル内のすべてのコマンドを置きます。 (そのファイルに@echo off
を追加することは私の選択肢ではなく、変更できません)。その問題を除いて、主な問題は、がの代わりにバッチファイルが実行されていることです。これは私が望むものではありません。
上記のようにPopen
オブジェクトを作成してバッチファイルを実行しても、そのプロセスの環境にアクセスできる場合、私は自分が望むものを得ることができたと考えました。しかし、Popenの文書から、これは可能ではないように見えます。
これを達成するためのアイデアはありますか?
これは素晴らしいです。私はその結果をあなたに知らせようとします。どちらも非常に良いソリューションのように見えます。あなたは特にお勧めですか? [私は私のインターネットを失ったので早く戻ってこなかった]。 –
好きなものを使います。2番目の方法は外部バッチファイルを必要としないという利点がありますが、より複雑なものにしたい場合はもっと制限されます。複数のvarsを取得します。 – Duncan
十分な公正。私は今のところ2番目のものを使用しています。ありがとう、トン男:)。 (そして、私は今Windowsマシンにアクセスできない、最終テストを行い、月曜日にこれを受け入れる)。 :) –