paramiko와 함께 python3에서 [ '\ n']을 읽으십시오.

2016-08-24 6 views
0

저는 python3에서 몇 가지 모니터링 도구를 시작했으며, ssh를 통해 'clear'번호 출력을 얻을 수 있는지 궁금합니다. 내가 "[ '"와 "\ n을']"제거 할 수 방법paramiko와 함께 python3에서 [ ' n']을 읽으십시오.

['22.3333\n'] 

이 단지를 얻을 : 그것은 출력을 제외하고 잘 작동

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() 

이다 : 나는 몇 가지 스크립트를했습니다 숫자 값을 지우시겠습니까?

내가 퍼티에서 볼 때 결과를 얻는 방법?

답변

3

.readlines()목록의 줄을 각각 반환합니다. 귀하의 경우에는 단 한 줄이, 당신은 단지 목록, 끝 부분에있는 공백의 다음 스트립을 인덱싱하여 추출 할 수 있습니다 :

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

이 있지만, 여전히 문자열입니다. 숫자가 인 경우 문자열을 float()으로 변환해야합니다.

result = float(stdout.read()) 
: 명령 행은 오직 라인을 반환합니다 때문에 ( float() 공백을 후행하고 선도하는 관대 한, 제거 할 필요), 당신은뿐만 아니라 단지 .read()를 사용하고 똑바로 변환 할 수 없다
1

대신 print(stdout.readlines())의 당신이 가능하게뿐만 아니라 float로 변환, stdout.readlines()strip 그것에 의해 반환되는리스트의 각 요소를 반복해야 할 것은 (나중에이 데이터와 함께 할 계획입니까 따라 다름).

이를위한 지능형리스트를 사용할 수 있습니다 시작과 문자열의 끝에서 모두 공백과 개행 문자를 제거합니다

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

strip있다. 후행 공백/개행 문자 만 제거하려면 rstrip을 사용할 수 있지만 float으로의 변환이 실패 할 수 있습니다.

 관련 문제

  • 관련 문제 없음^_^