2016-08-23 11 views
2

私はディレクトリ/Desktop/jsonsにjsonファイルのセットを持っています。私はjsonを取り込んで出力するScalaスクリプトを持っています。私は、Scalaのスクリプト(/Me/dev/scalastuff)のディレクトリにINGのとコマンドラインでpythonスクリプトを使ってsbtを実行し、ファイルに出力する

sbt --error "run /Desktop/jsons/jsonExample.json"、私はターミナルで欲しいものを出力

を実行cdにより、端末に手動で実行することができます。

私はこれを自動的に行うPythonスクリプトを書いて、さらにScalaスクリプトが出力した "stuff"を持つjsonファイルを出力します。

私の問題は現在サブプロセスを使用しています。私は

BASEDIR = '/Me/dev/scalastuff' p = subprocess.Popen(['sbt --error "run /Desktop/jsons/jsonExample.json"'], cwd = BASEDIR, stdout = subprocess.PIPE) out = p.stdout.read() print out

を実行しようとすると、私はOSError: [Errno 2] No such file or directoryを取得します。

なぜこれが起こっているのか完全に困惑しています。私はサブプロセスに慣れていないので、私の上で軽い!

答えて

3

popenには、シェル引数のリストがあります。あなたは1つだけを通過している!

したがって、ファイル名は'sbt --error "run /Me/Desktop/jsons/jsonExample.json"'となります。

明らかに、これは機能しません。

popenを使用すると、シンプルな配列を渡すだけです - エスケープに気をつける必要はありません:

subprocess.popen(['sbt', '--error', 'run /Me/Desktop/...'], cwd = BASEDIR, stdout = subprocess.PIPE) 
+1

Ah!それは確かに私が欠けていたものです。本当にありがとうございます - 私は、時間が過ぎると答えるように質問をマークします。 – boldbrandywine

関連する問題