2016-08-24 65 views
0

我剛剛開始在python3中做一些監控工具,我想知道,如果我可以通過ssh獲得'清除'數字輸出。我做了一些腳本:在python3中讀取[' n']與paramiko

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’]」和剛剛得到的清除數字值?

如何在膩子中看到結果?

回答

3

.readlines()返回一個列表單獨的行。你的情況只有一個行,你可以通過索引列表,然後在最後的空白帶解壓:

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

這仍然是一個字符串,但是。如果您期望號碼,則必須將該字符串轉換爲float()。由於您的命令行僅會返回一個,你可能也只是使用.read()和轉換是直線上升(無需條,如float()是寬容的拖尾和先行空白):

result = float(stdout.read()) 
1

相反的print(stdout.readlines())你應該遍歷由stdout.readlines()strip它返回列表中的每個元素,它可能轉換爲float以及(取決於你打算以後這個數據做)。

您可以使用列表中理解這個:

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

注意strip會從一開始就和字符串的結尾都去掉空格和換行字符。如果您只想刪除尾部空格/換行符,則可以使用rstrip,但請注意,轉換爲float可能會失敗。