1
pythonスクリプトからqsubにタスクを割り当てようとしています。Python:サブプロセスでエコーする
は、これまでのところ、私はいつものqsub提出するため、このような表現を使用されています:
echo "python script.py arg1 arg2" | qsub
私はpythonでこのコマンドを再現してみました:
command = 'echo "python sub_master_script.py ' + str(i) + ' ' + path + '" | qsub -pe make 5 -N Teaching_' + str(i) + ' -cwd'
subprocess.call(shlex.split(command))
command
は私が通常使用するコマンドを運びますが、私はPythonスクリプトを起動すると、単純なecho
と解釈されます。
、代わりに新しいジョブを開始する
、私はこれがコンソールに書き込まれます:python sub_master_script.py 0.75 /data5/bio/runs-galkin/Iterative/test_OTU.txt | qsub -pe make 5 -N Teaching_0.75 -cwd
この問題が発生したのはなぜ?どうすればそれを動作させることができますか?
これは、 'i'と' path'が引用/エスケープする必要のない文字列であることを前提としています。値を準備するために 'pipes.quote()'を使うことはより安全です(但し、OPの元のシェルコマンドは全く同じ方法で安全ではない/バグです)。 –
@CharlesDuffy素敵なアドオン。編集されました。 –
あなたの解決策を試してみましたが、 'TypeError:__init __()に予期しないキーワード引数 'input''がありました ' subprocess.Popen(command、shell = True、stdout = subprocess.PIPE、stderr = subprocess.STDOUT) '正常に動作します。私は 'shell = True'で何が間違っているのか分からないので、私は残しておきます – lotrus28