这可以以任何方式缩短/简化吗?

时间:2014-07-21 11:46:03

标签: python parsing variables stdout readlines

我目前正在尝试学习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

stdout的输出示例如下:

['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', 'overlay@\n', 'reboot_reason%\n', 'recipients@\n', 'sender$\n', 'smtp\n', 'authentication$\n', 'password$\n', 'port$\n', 'server$\n', 'status$\n', 'tls$\n', 'username$\n', '1\n']

基本上,我可以从stdout输出中以更有效的方式填充变量smtpstatus吗?我不确定我是否必须将其转换为整数这一事实会让它更复杂一些?

'字段编号'可以随时变化,对于这个特定值,它可以从上面的代码片段中看出为20。

提前谢谢,迈克

1 个答案:

答案 0 :(得分:2)

不是真的。反正不是很多。转换为int有点效率低,是因为它有一个异常处理开销...但您可以比较smtpstatus == "1\n",就像比较这两个字符串一样。但它不会产生那么大的差别。如果你不需要其余的话,你也可以考虑只阅读stdout到第20行。这可能是最大的放缓。