2014-11-11 2 views
0

많은 인쇄 명령으로 약 300 행의 스크립트 (일부는 아래에 붙여 넣음)가 있습니다. 내가 생산 한 생산물을 정화하려고합니다. 그런 식으로 그대로두면 모든 인쇄 명령이 콘솔에 \ r \ n 인 바이트를 인쇄합니다..decode() 메소드로 인쇄 명령 추가하기

내가 출력해야하는 변수 앞에 .decode ('utf-8')를 추가하면 출력이 내가 원하는 (유니 코드 문자열) 것으로 생각됩니다. 예를 들어 아래의 print (data1) 및 print (data3) 명령을 비교하십시오. 내가하고 싶은 것은 모든 코드를 검토하고 모든 print 문에 .decode()를 추가하는 것입니다.

모든 인쇄 명령이 형식으로되어 있습니다 : .decode()string 방법이기 때문에 실패합니다 .decode()print()에 문을 덧붙이 인쇄 (dataxxxx)

import telnetlib 
import time 
import sys 
import random 
from xlwt import Workbook 

shelfIp = "10.10.10.10" 
shelf = "33" 

print ("Shelf IP is: " + str(shelfIp)) 
print ("Shelf number is: " + str(shelf)) 


def addCard(): 

    tn = telnetlib.Telnet(shelfIp) 

    ### Telnet session 
    tn.read_until(b"<",5) 
    cmd = "ACT-USER::ADMIN:ONE::ADMIN;" 
    tn.write(bytes(cmd,encoding="UTF-8")) 
    data1 = tn.read_until(b"ONE COMPLD", 5) 
    print (data1.decode('utf-8')) 

    ### Entering second network element 
    cmd = "ENT-CARD::CARD" + shelf + "-" + shelf + ":TWO:xyz:;" 
    tn.write(bytes(cmd,encoding="UTF-8")) 
    data3 = tn.read_until(b"TWO COMPLD", 5) 
    print (data3) 

    ### Entering third network element 
    cmd = "ENT-CARD::CARD-%s-%s:ADM:ABC:;" %(shelf,shelf) 
    tn.write(bytes(cmd,encoding="UTF-8")) 
    dataAmp = tn.read_until(b"ADM COMPLD", 5) 
    print (dataAmp) 

    tn.close() 

addCard() 
+1

그 다음 질문은 무엇입니까? – SatA

+0

들여 쓰기를 수정하십시오. – senshin

+1

참고 사항 : 샘플 코드에서 제공 한 IP 및 기타 문자열이 실제가 아니거나 사용 중이 지 않기를 바랍니다. 보안이 중요하므로 시스템이나 소프트웨어에 대한 중요한 정보를 붙여서는 안됩니다. 대신 의미가없는 더미 문자열을 넣고 질문을 명확히하기 위해 보여줄 필요가있는 것을 보여주십시오. – SatA

답변

0

코드에서 찾기를-교체, 당신이 시도 할 수 있습니다 :

  1. 캐치 텍스트 포함 : 나는 정규 표현식에 무슨 짓을

    import re 
    
    f = open('script.py','rb') 
    script = f.read() 
    f.close() 
    
    newscript = re.sub("(print\(.*)\)", "\g<1>.decode('utf-8'))", script) 
    
    f = open('script.py', 'wb') 
    f.write(newscript) 
    f.close() 
    

    print(..... 부분을 그룹 1에 저장하십시오.

  2. print(.... 인 텍스트는 ) 인 다음으로 바꾸십시오. .decode('utf-8'))\g<1>은 저장된 그룹 번호 1을 가져 와서 대체 된 텍스트의 접두어로 사용합니다.
+0

그게 정확히 내가 찾던 ... 감사합니다! – codeNoob

0

.

>>> x=u"testing" 
>>> print(x).decode('utf-8') 
testing 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'decode' 

당신은 당신이 쉽게 정규식 기반 도구를 사용하여 수행되지 않는, 디코딩하고자하는 변수에 .decode('utf-8')를 적용해야합니다. 당신은 어떤 종류의 일을 조사하는 경우