2017-10-27 6 views
0

터미널 및 일부 출력 파일에 색상이있는 터미널에서 통과 및 실패를 인쇄합니다.파이썬이 터미널과 파일에도 색상을 처리합니다.

터미널 출력 :

Parameter    Output     Result 
    ------------    ------------    ------- 
    Timer Enabled   Enabled     Passed 

파일 출력 (VIM 편집기를 사용하여 열) :

HEADER = '\033[95m' 
OKBLUE = '\033[94m' 
OKGREEN = '\033[92m' 
WARNING = '\033[93m' 
FAIL = '\033[91m' 
ENDC = '\033[0m' 
BOLD = '\033[1m' 
UNDERLINE = '\033[4m' 

코드 실행이 리눅스 머신에서 발생 : 파이썬에서

Parameter    Output     Result 
    ------------    ------------    ------- 
    Timer Enabled   Enabled     ^[[92mPassed^[[0m 

내가 코드 아래 사용 파일 열기는 Windows 머신 (워드 패드 또는 메모장 ++) 및 vim 편집기와 같은 Linux에서 수행됩니다.

이제 vim이나 windows 단어 패드에서 파일을 열 때 도움이 필요합니다. 나는 "^ [[92mPassed^[0m"그것의 너무 못생긴]과 같은 색깔 코드를보고 싶지 않다. 파일 출력 (1 표준 출력에 대한 파일 핸들입니다) 당신이 os.isatty(1)을 사용할 수 있습니다

python script.py > foo.txt 

의 방법에 의해 생성되는 경우 중 하나는 알아 내기 위해 결과

+0

[출력]이 파일 인 경우 자동으로 ANSI 코드를 제거하는 [click] (http://click.pocoo.org/5/)과 같은 라이브러리가 있습니다. 또한 텍스트 서식 지정/색칠하기에 좋은 인터페이스를 제공합니다. – Holloway

답변

0

을 달성하기 위해 나에게 최고의 옵션을 도울 수 출력이 터미널에 연결되는지 여부 (파일과 반대) 터미널에 연결되어 있으면 색상 제어 코드를 출력하지 마십시오.

또한 자연적으로 또한 그 추악한 색상 코드없이 파일의 출력을 얻을 도움이 될 것입니다

text = re.sub('\033\\[\d+m', '', text) 
+0

python script.py> foo.txt 다시 파일의 색상 코드를 인쇄합니다 .. os.isaaty (1) 지금은 문서를 읽고 이해할 수 없어 스트라이프가 좋은 옵션 일 수 있습니다. –

0
import sys 
class Colors: 
HEADER = '\033[95m' 
OKBLUE = '\033[94m' 
OKGREEN = '\033[92m' 
WARNING = '\033[93m' 
FAIL = '\033[91m' 
ENDC = '\033[0m' 

def disable(self): 
    self.HEADER = '' 
    self.OKBLUE = '' 
    self.OKGREEN = '' 
    self.WARNING = '' 
    self.FAIL = '' 
    self.ENDC = '' 
    # Prints to terminal 
    print (Colors.FAIL + "This is the sample text..." + Colors.ENDC)  
    # Handles text without color code in file. 
    orig_stdout = sys.stdout 
    f = open('out.txt', 'a') 
    sys.stdout = f 
    with open('out.txt', 'w') as f: 
     print (color.FAIL + "This is the sample text..." + color.ENDC) 

color = Colors() 
color.disable() 

disable처럼 뭔가 제어 코드를 포스트 사실을 제거 할 수 있습니다.

방금 ​​샘플 코드를 만들었습니다. 필요에 따라 변경하고 다시 사용할 수 있습니다.

0

텍스트 색상 & 파이썬에서 색상 파노라마를 패키지를 사용해보십시오 윈도우 & 리눅스에서 크로스 플랫폼을 지원한다. Termcolor와 같은 기존 ANSI 라이브러리와 함께 사용할 수도 있습니다. 이 방법은 터미널에서 텍스트 색칠을 위해 ASCII 시퀀스를 수동으로 인쇄하는 것보다 낫습니다.

from colorama import Fore, Back, Style 
    print(Fore.RED + 'Red Text') 
    print(Back.GREEN + 'background in Green') 
    print(Style.DIM + 'Dim Text') 
    print(Style.RESET_ALL) 
    print('Normal Text')