用 paramiko 去掉 python3 中的 ['\n']
Get rid of ['\n'] in python3 with paramiko
刚开始在Python3写一个监控工具,想知道能不能通过ssh得到一个'clear'的数字输出。我写了这个脚本:
import os
import paramiko
command = 'w|grep \"load average\"|grep -v grep|awk {\'print (++)/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 中看到的结果?
而不是 print(stdout.readlines())
您应该遍历列表中由 stdout.readlines()
和 strip
返回的每个元素,也可能将其转换为 float
(取决于您以后打算如何处理这些数据)。
您可以为此使用列表理解:
print([float(line.strip()) for line in stdout.readlines()])
请注意,strip
将从字符串的开头和结尾删除空格和换行符。如果您只想删除结尾的 whitespace/new-line 字符,则可以使用 rstrip
,但请注意,转换为 float
可能会失败。
.readlines()
returns 一个 list 单独的行。在你的情况下只有一行,你可以通过索引列表来提取它,然后在末尾去掉空格:
firstline = stdout.readlines()[0].rstrip()
但是,这仍然是一个字符串。如果您希望 numbers,则必须将字符串转换为 float()
。由于您的命令行只会 return 一个 行,您不妨使用 .read()
并直接转换它(不需要剥离,因为 float()
容忍尾随和前导空格):
result = float(stdout.read())
刚开始在Python3写一个监控工具,想知道能不能通过ssh得到一个'clear'的数字输出。我写了这个脚本:
import os
import paramiko
command = 'w|grep \"load average\"|grep -v grep|awk {\'print (++)/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 中看到的结果?
而不是 print(stdout.readlines())
您应该遍历列表中由 stdout.readlines()
和 strip
返回的每个元素,也可能将其转换为 float
(取决于您以后打算如何处理这些数据)。
您可以为此使用列表理解:
print([float(line.strip()) for line in stdout.readlines()])
请注意,strip
将从字符串的开头和结尾删除空格和换行符。如果您只想删除结尾的 whitespace/new-line 字符,则可以使用 rstrip
,但请注意,转换为 float
可能会失败。
.readlines()
returns 一个 list 单独的行。在你的情况下只有一行,你可以通过索引列表来提取它,然后在末尾去掉空格:
firstline = stdout.readlines()[0].rstrip()
但是,这仍然是一个字符串。如果您希望 numbers,则必须将字符串转换为 float()
。由于您的命令行只会 return 一个 行,您不妨使用 .read()
并直接转换它(不需要剥离,因为 float()
容忍尾随和前导空格):
result = float(stdout.read())