私は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」はコマンドを含む文字列です。OSはbashシェルを持つCentOSです。
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
out = process.stdout.readline()
out = out.decode("utf-8").strip("n")
回答:
回答№1は0コマンドにプロセス置換が含まれていますが、 Popen
を使用してコマンドを実行します /bin/sh
。実行時 /bin/sh
しかし、 bash
プロセス置換を許可しません。明示的にコマンドの実行を要求することができます bash
を使用して executable
オプション。
process = subprocess.Popen(cmd, shell=True, executable="/bin/bash", stdout=subprocess.PIPE)