2016-08-29 25 views
0

私はPythonコードでシェルコマンドを実行しようとしていますが、なぜ失敗したのか理解できません。サブプロセスで実行中にエラーが発生しました

コマンドを印刷してシェルに貼り付けると、それを直接実行してみると完璧に機能しますが、それは変です。

のPythonから私は次のように取得しています:

/bin/sh: -c: line 0: syntax error near unexpected token `(' 
/bin/sh: -c: line 0: `/DATA/NGS/ngs_software/bioinfoSoftware/bwa_current/bwa mem ... --threads 4 -T /tmp/samTemp -' 

は私が欠けているものはありますか?私のコードは次のようになります。「cmd」はコマンドの文字列です。

process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) 
out = process.stdout.readline() 
out = out.decode("utf-8").strip('\n') 
+0

コマンドとは何ですか? – Samuel

+0

'それを実行しようとするシェルは、直接アイドル状態でアイドル状態になりますが、あなたのアプリを誰が外に持っていますか? – dsgdfg

+0

@chepnerは正解を返しました。お手伝いありがとう! –

答えて

0

あなたのコマンドは、プロセス置換が含まれていますが、/bin/shを使用して、そのコマンドが実行さPopen:OSは、bashシェルでCentOSのです。ただし、/bin/shとして実行すると、bashはプロセスの置換を許可しません。 オプションを使用して、コマンドをbashで実行するよう明示的に要求できます。

process = subprocess.Popen(cmd, shell=True, executable='/bin/bash', stdout=subprocess.PIPE) 
+0

それはうまくいって、うまくいきませんでした。本当にあなたの助けをありがとう:) –

関連する問題