2014-07-21 50 views
0

我目前正在努力學習Python,可能仍然在做太多/太笨重的事情。這可以以任何方式縮短/簡化?

我在我的一個小程序中得到了以下幾行代碼,並且一直在想我是否可以使它更高效一些?從標準輸出

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, 感謝您的反饋,非常感謝。 您可以延長一點,關於如何閱讀'標準輸出'到第20行?我最初在'每行'的基礎上遇到了麻煩 - 這就是爲什麼我實際上使用'stdout.readlines()'而不是'stdout.read()'的原因。 –