2014-07-21 1 views
0

저는 현재 파이썬을 배우려고 노력 중이며 여전히 너무 많은 단계에서 일을하고 있습니다.어떤 방식 으로든 단축/능률화 할 수 있습니까?

내 작은 프로그램 중 하나에서 다음 코드 줄이 있는데 좀 더 효율적으로 만들 수 있는지 궁금해하고 있습니까? 표준 출력에서 ​​

stdin, stdout, stderr = ssh.exec_command('echo -e "MAIN\nnotifications\nsmtp\nstatus$" | confd-client.plx -batch') 
orglines = stdout.readlines() 
smtpstatus = int(orglines[20]) 
if smtpstatus == 1: 
    do something 
else: 
    do something else 

예 출력이 같이 보입니다 :

기본적으로
['Available modes: MAIN OBJS RAW WIZARD.\n', 'Type mode name to switch mode.\n', "Typing 'help' will always give some help.\n", 'device_info$\n', 'limiting$\n', '[email protected]\n', 'reboot_reason%\n', '[email protected]\n', 'sender$\n', 'smtp\n', 'authentication$\n', 'password$\n', 'port$\n', 'server$\n', 'status$\n', 'tls$\n', 'username$\n', '1\n'] 

, 나는 변수 smtpstatus 여기에 표준 출력 출력에서 ​​더 효율적인 방법으로 채워 얻을 수 있을까? 나는 그것을 정수로 변환해야한다는 사실을 좀 더 복잡하게 만들지 모르겠다.

'필드 번호'는 때때로 달라질 수 있습니다.이 특정 값의 경우 위의 코드 스 니펫에서 볼 수 있듯이 20입니다.

미리 감사드립니다. 마이크

답변

2

아니요. 어쨌든별로. int으로의 변환은 오버 헤드를 처리하는 예외가 있기 때문에 약간 비효율적입니다.하지만이 두 문자열을 비교할 때와 마찬가지로 smtpstatus == "1\n"을 비교할 수 있습니다. 그러나 그렇게 많은 차이를 만들지는 않을 것입니다. 나머지가 필요하지 않은 경우 최대 줄 수는 stdout까지 20 줄까지만 읽을 수도 있습니다. 그것은 아마도 가장 큰 침체 일 것입니다.

+0

아, 감사합니다. 그렇게 회색으로 처리하는 방법입니다. @tim –

+0

당신을 진심으로 환영합니다. [Markdown 또는 HTML을 사용하여 게시물의 서식을 지정하는 방법은 무엇입니까?] (http://stackoverflow.com/help/formatting)를 참조하십시오. –

+0

Tim, 귀하의 의견에 진심으로 감사드립니다. 'stdout'을 20 행까지 읽는 방법에 대해 조금 더 확장 해 주시겠습니까? 처음에는 줄 단위로 다루는 데 어려움을 겪었습니다. 그래서 실제로 'stdout.read()'대신 'stdout.readlines()'를 사용합니다. –

관련 문제