2016-08-29 3 views
0

파이썬 코드를 통해 쉘 명령을 실행하려고하는데 실패한 이유를 이해할 수 없습니다.하위 프로세스로 실행하는 동안 오류가 발생했습니다.

명령을 인쇄하여 셸에 붙여 넣으면 직접 실행하면 완벽하게 정상적으로 작동하지만 그 이상한 부분입니다. 파이썬에서

내가지고있어 다음

/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

굉장!, 그 일을하고, 그것에 대해 몰랐다. 참으로 당신의 도움을 주셔서 감사합니다 :) –

관련 문제