2015-01-12 3 views
0

파이썬 스크립트에서 call() 함수를 사용하여 외부 소프트웨어에서 명령을 실행합니다. 함수의 출력을 변수에 저장하고 변수로 작업하려고합니다. 그러나 출력 값은 변수에 저장되지 않습니다. 변수를 인쇄하는 명령을 내리면 기본값 인 0이 인쇄됩니다. 코드는 다음과 같습니다.변수에 명령 출력 저장

from subprocess inport call 
print "\n Summarizing mutations" 
summary_mutation = call(["halSummarizeMutations", hal_output]) 
print summary_mutation 

hal_output은 halSummarizeMutations 명령에 지정된 입력 파일입니다. 내가 얻는 결과는 다음과 같습니다.

GenomeName, ParentName, BranchLength, GenomeLength, ParentLength, Subtitutions, Transitions, Transversions, Matches, GapInsertions, GapInsertedBases, GapDeletions, GapDeletedBases, Insertions, InsertionBases, Deletions, DeletionBases, Inversions, InvertedBases, Duplications, DuplicatedBases, Transpositions, TranspositionBases, Other 
ancestral_sequences, homo_sapiens, 1, 225206, 248956422, 149218, 49494, 99724, 49433, 10, 698, 0, 0, 17, 20539, 10, 4345, 1343, 134907, 672, 57699, 0, 0, 0 
gorilla_gorilla, homo_sapiens, 1, 229507203, 248956422, 44226, 13434, 26644, 15224, 68, 593, 120, 6319, 15, 229443572, 6, 857, 0, 0, 0, 0, 0, 0, 10 
papio_anubis, homo_sapiens, 1, 220367699, 248956422, 98187, 32113, 64759, 32284, 6, 1418, 11, 245, 36, 220231921, 30, 7448, 791, 109496, 0, 0, 0, 0, 0 
Total, ,3, 450100108, 746869266, 291631, 95041, 191127, 96941, 84, 2709, 131, 6564, 68, 449696032, 46, 12650, 2134, 244403, 672, 57699, 0, 0, 0 
Average, ,1, 150033369, 248956422, 97210, 31680, 63709, 32313, 28, 903, 43, 2188, 22, 149898677, 15, 4216, 711, 81467, 224, 19233, 0, 0, 0 

0 

여기서 0은 summary_mutation 변수의 값입니다. 제발 도와주세요. 미리 감사드립니다.

+0

'call '메소드는'subprocess' 모듈의 것입니까? (즉,'subprocess import call'이 코드에 나타납니다)? 서명은 그 것처럼 보이지만 확실히하고 싶었습니다. – rchang

+0

예, 서브 프로세스 모듈에서 가져온 것으로 가져 오기 명령을 수행했지만 여기서는 표시하지 않았습니다. 죄송합니다! –

답변

1

subprocess 모듈을 사용한다고 가정하면 출력과 상호 작용하려면 Popen 개체를 사용하는 것이 가장 좋습니다.

from subprocess import Popen, PIPE 

proc = Popen(["halSummarizeMutations", hal_output], stdout=PIPE) 
summary_mutation = proc.communicate()[0] 

이제 summary_mutation은 서브 프로세스의 표준 출력 스트림 내용에 대한 문자열 표현이어야합니다.

+0

@ VarshithChakrapani 도움이된다면 기쁩니다. 아직 살펴 보지 않았다면 Python 2.x'subprocess' 모듈에 대한 문서가이 링크에 있습니다 (https://docs.python.org/2/library/subprocess.html). – rchang

+0

@VarshithChakrapani : 당신은 또한'summary_mutation = subprocess.check_output ([ "halSummarizeMutations", hal_output])' – jfs