2009-07-06 4 views
3

는 정보의 전체 화면을 출력하고 나는 "6"라인 여기에 화면 밖으로 특정 라인을 인쇄 할이 잘 작동python을 사용하여 출력물을 인쇄하는 방법은 무엇입니까? 이 .EXE 파일이 실행되면

cmd = ' -a ' + str(a) + ' -b ' + str(b) + str(Output) 
    process = Popen(cmd, shell=True, stderr=STDOUT, stdout=PIPE) 
    outputstring = process.communicate()[0] 
    outputlist = outputstring.splitlines() 
    Output = outputlist[5] 
    print cmd 

: cmd = ' -a ' + str(a) + ' -b ' + str(b)

이 작동하지 않습니다 cmd = ' -a ' + str(a) + ' -b ' + str(b) + str(Output)

내가 Output가 정의되어 있지 않은 말하는 오류가 발생합니다. 내가 잘라 붙여 넣을 때 : cmd를 문 앞에

outputstring = process.communicate()[0] 
    outputlist = outputstring.splitlines() 
    Output = outputlist[5] 

그것을 프로세스가 정의되지 않은 나에게 말한다. str(Output)은 .exe가 실행될 때 6 행에 인쇄되어야합니다.

답변

0

당신이 말했듯이, 변수는 사용하기 전에 선언되어야합니다. 그러므로 str(Output) ABOVE Output = outputlist[5]으로 전화하면 출력이 아직 존재하지 않습니다. 당신은 실제로 전화를 먼저해야합니다

cmd = ' -a ' + str(a) + ' -b ' + str(b) 

다음 해당 명령의 출력을 인쇄 할 수 있습니다

cmd_return = ' -a ' + str(a) + ' -b ' + str(b) + str(Output) 

직접 print cmd_return 위의 라인이어야한다.

+0

Popen을 호출 할 때 cmd가 필요합니다. – AlbertoPL

+0

당신은'Popen (cmd, ...')을 놓쳤습니다. – avakar

5

호출 결과를 호출 자체에 추가하려고합니다. 처음에 출력을 얻으려면 + str(Output) 부분없이 명령을 한 번 실행해야합니다.

이렇게 생각하십시오. 일부 숫자를 함께 추가한다고 가정 해 봅시다.

z = 5 + b 
b = z + 2 

나는 두 문장의 순서에 따라 문 앞에 z 또는 b 중 하나를 정의해야합니다. 내가 무엇인지 알기 전에 변수를 사용할 수 없습니다. 변수를 정의하기 전에 변수 Output을 사용하여 동일한 작업을 수행하고 있습니다.

1

주변을 움직이는 "춤"이 아니어야합니다. 그것은 "="의 왼쪽에있는 것의 문제입니다. 왼쪽에 있으면 생성됩니다. 그것이 오른쪽에 있다면 그것은 사용 중입니다.

사실, 첫 번째 줄에는 출력의 일부가 필요하므로 끝날 때까지 생성되지 않으므로 예제가 조금이라도 작동하지 않습니다.

이것을 이해하는 가장 쉬운 방법은 거꾸로 작업하는 것입니다. 최종 결과로보고 싶습니까?

print output[5] 

오른쪽? 그래서 거기에 가려면 더 큰 문자열에서 이걸 가져와야합니다. 맞습니까?

output= outputstring.splitlines() 
print output[5] 

outputstring은 어디에서 왔습니까? 그것은 어떤 하위 프로세스에서 발생했습니다.

outputstring = process.communicate()[0] 
output= outputstring.splitlines() 
print output[5] 

그렇다면 프로세스는 어디서 발생 했습니까?그것은 서브 프로세스는 popen

process = Popen(cmd, shell=True, stderr=STDOUT, stdout=PIPE) 
outputstring = process.communicate()[0] 
output= outputstring.splitlines() 
print output[5] 

그래서 여기서 cmd는 어디에서 왔는가에 의해 만들어진? 나는 말할 수 없다. 당신의 예제는 어떤 명령이 실행되고 있는지 이해하지 못합니다.

cmd = ? 
process = Popen(cmd, shell=True, stderr=STDOUT, stdout=PIPE) 
outputstring = process.communicate()[0] 
output= outputstring.splitlines() 
print output[5] 
1

그냥 당신의 첫 번째 라인을 변경

cmd를 = '-a'+ STR (A) + 말 + STR (b)에

및 인쇄 문을 '-b' 로 : 이것은 인쇄 할 무엇인지 정확히 알지 못하고있다

인쇄 cmd를 + STR (출력)

... -seems- 그것은 당신의 문제는 Y 전에 출력을 사용하려고하는 경우 등 ou는 실제로 Output 변수가 무엇인지 정의합니다 (위의 게시물처럼)

관련 문제