使用paramiko摆脱python3中的[' \ n']

时间:2016-08-24 12:08:29

标签: python python-3.x output special-characters paramiko

我刚刚开始在Python 3中编写一个监控工具,我想知道我是否可以得到一个清晰的''通过ssh输出数字。我写过这个剧本:

import os
import paramiko

command = 'w|grep \"load average\"|grep -v grep|awk {\'print ($10+$11+$12)/3*100\'};'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy())
ssh.connect('10.123.222.233', username='xxx', password='xxx')
stdin, stdout, stderr = ssh.exec_command(command)
print (stdout.readlines())
ssh.close()

它的工作正常,但输出是:

['22.3333\n']

如何摆脱['\n']并获得明确的数字值?

如何在PuTTy中看到结果?

2 个答案:

答案 0 :(得分:3)

.readlines()会返回单独行的列表。在你的情况下只有一行,你可以通过索引列表来提取它,然后在最后剥去空白:

firstline = stdout.readlines()[0].rstrip()

然而,这仍然是一个字符串。如果您需要数字,则必须将字符串转换为float()。由于您的命令行只返回一个行,您也可以使用.read()并将其直接转换(无需删除,因为float()可以容忍尾随和领先的空白):

result = float(stdout.read())

答案 1 :(得分:1)

而不是print(stdout.readlines())你应该迭代stdout.readlines()strip返回的列表中的每个元素,也可能将其转换为float(取决于什么)你打算稍后处理这些数据。)

您可以使用列表理解:

print([float(line.strip()) for line in stdout.readlines()])

请注意,strip将从字符串的开头和结尾删除空格和换行符。如果您只想删除尾随空格/换行符,则可以使用rstrip,但请注意,转换为float可能会失败。