2013-10-09 7 views
0


나는 몇 가지 명령을 내가 명령의 예
하나의 출력을 검색 할 수 pexpect를 사용하여 하나의 응용 프로그램을 만들 수있다는 Pexpect 다음은 캐리지 리턴 문제

ps aux 

그리고이 약간입니다 pexpect

root 28039 0.0 0.1 57780 3056 ? Ss Sep26 0:04 /opt/services/s^M 
root 28093 0.5 0.4 131688 6492 ? Ss Sep26 93:25 /opt/services/s^M 
root 28125 0.2 0.8 222680 13012 ? Ssl Sep26 36:21 /opt/services/s^M 

여기서 문제로부터 직접 출력 출력 잘리고 만 출력 중간에 '\ r에'를 추가하지 않도록한다.
이것은 명령에서 "| cat"을 사용하여 해결할 수 있지만 출력을 cat으로 재지 정하는 것과 관련이없는 해결책이 필요합니다.

큰 명령을 보내면 출력되는 것을 보았습니다. 출력은 항상 중간에^M이있는 명령입니다.

이 문제를 해결하기 위해 터미널이나 pexpect에서 수행 할 수있는 변경 사항이 있습니까?

+0

이 코드를 보여 주시겠습니까 의미? – Milo

+0

이 코드는 많은 종류의 클래스와 물건으로 매우 복잡합니다. 하지만 내가 여기에있는 것은 화면에 pexpect의 출력을 활성화 할 때 나타나는 것입니다. – jpereira

답변

0

사용

ps axuww 

ww

w    Wide output. Use this option twice for unlimited width. 

import pexpect 
child = pexpect.spawn('ps auxww') 
while True: 
    try: 
     child.expect('\r\n') 
     print(child.before) 
    except pexpect.EOF: 
     break 
+0

문제는 ps ​​자체가 아닌 콘솔이 작은 덩어리로 출력을 자르는 것처럼 보이지만 '\ r'을 사용하는 것처럼 보입니다. pexpect와 관련이 있습니다 – jpereira

+0

@ psereira : ps는 터미널에서 실행 중이며 그 출력을 터미널 너비에 맞게 형식화하려고 시도하고있을 것입니다. 'ww' 옵션은 그것을 멈추게 할 것입니다. [setwinsize() 메서드] (http://pexpect.readthedocs.org/en/latest/api/pexpect.html#pexpect.spawn.setwinsize)를 사용하여 터미널을 더 넓게 만들 수도 있습니다. –

+0

@ThomasK : 네, 터미널 크기를 변경하여 문제를 해결했습니다. – jpereira