我目前正在尝试学习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。
提前谢谢,迈克
答案 0 :(得分:2)
不是真的。反正不是很多。转换为int
有点效率低,是因为它有一个异常处理开销...但您可以比较smtpstatus == "1\n"
,就像比较这两个字符串一样。但它不会产生那么大的差别。如果你不需要其余的话,你也可以考虑只阅读stdout
到第20行。这可能是最大的放缓。