영어 readme • 简体中文 readme • 정체중문 readme • Lengua española readme • Deutsche readme • Läs på svenska • 日本語 readme • 한국어 readme • Français readme • Schwizerdütsch readme • اندي readme • Português brasileiro readme • 이탈리아어 readme • Русский readme • 인도네시아어 readme • Пارسی readme • Türkçe readme • Polskie readme
Rich는 터미널에서 서식 있는 텍스트와 아름다운 서식을 제공하는 Python 라이브러리입니다.
Rich API를 사용하면 터미널 출력에 색상과 스타일을 쉽게 추가할 수 있습니다. Rich는 또한 예쁜 테이블, 진행률 표시줄, 마크다운, 구문 강조 소스 코드, 역추적 등을 즉시 렌더링할 수 있습니다.
Rich에 대한 소개 비디오를 보려면 @fishnets88의 Calmcode.io를 참조하세요.
사람들이 Rich에 대해 어떻게 말하는지 알아보세요.
Rich는 Linux, macOS 및 Windows에서 작동합니다. 트루 컬러/이모지는 새로운 Windows 터미널에서 작동하며, 클래식 터미널은 16가지 색상으로 제한됩니다. Rich에는 Python 3.8 이상이 필요합니다.
Rich는 추가 구성 없이 Jupyter 노트북과 함께 작동합니다.
pip
또는 선호하는 PyPI 패키지 관리자를 사용하여 설치하세요.
python -m pip install rich
터미널에서 Rich 출력을 테스트하려면 다음을 실행하세요.
python -m rich
애플리케이션에 풍부한 출력을 쉽게 추가하려면 내장 Python 함수와 동일한 서명이 있는 풍부한 인쇄 방법을 가져올 수 있습니다. 이것을 시도하십시오:
from rich import print
print ( "Hello, [bold magenta]World[/bold magenta]!" , ":vampire:" , locals ())
Rich는 Python REPL에 설치할 수 있으므로 모든 데이터 구조가 깔끔하게 인쇄되고 강조 표시됩니다.
>> > from rich import pretty
>> > pretty . install ()
풍부한 터미널 콘텐츠를 더 효과적으로 제어하려면 콘솔 개체를 가져오고 구성하세요.
from rich . console import Console
console = Console ()
Console 개체에는 내장 print
기능과 의도적으로 유사한 인터페이스를 갖는 print
메서드가 있습니다. 사용 예는 다음과 같습니다.
console . print ( "Hello" , "World!" )
예상할 수 있듯이 이는 "Hello World!"
인쇄합니다. 터미널로. 내장된 print
기능과 달리 Rich는 터미널 너비에 맞게 텍스트를 단어 줄 바꿈합니다.
출력물에 색상과 스타일을 추가하는 몇 가지 방법이 있습니다. style
키워드 인수를 추가하여 전체 출력에 대한 스타일을 설정할 수 있습니다. 예는 다음과 같습니다.
console . print ( "Hello" , "World!" , style = "bold red" )
출력은 다음과 같습니다.
한 번에 한 줄의 텍스트 스타일을 지정하는 데 적합합니다. 보다 세밀한 스타일을 위해 Rich는 bbcode와 구문이 유사한 특수 마크업을 렌더링합니다. 예는 다음과 같습니다.
console . print ( "Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i]." )
Console 개체를 사용하면 최소한의 노력으로 정교한 출력을 생성할 수 있습니다. 자세한 내용은 콘솔 API 문서를 참조하세요.
Rich에는 클래스, 인스턴스 또는 내장과 같은 Python 개체에 대한 보고서를 생성할 수 있는 검사 기능이 있습니다.
>> > my_list = [ "foo" , "bar" ]
>> > from rich import inspect
>> > inspect ( my_list , methods = True )
자세한 내용은 검사 문서를 참조하세요.
Rich에는 CLI에서 멋진 출력을 생성하고 코드를 디버깅하는 데 사용할 수 있는 다양한 내장 렌더링 가능 기능이 포함되어 있습니다.
자세한 내용을 보려면 다음 제목을 클릭하세요.
Console 개체에는 print()
와 유사한 인터페이스를 가지고 있지만 현재 시간에 대한 열과 호출한 파일 및 줄을 렌더링하는 log()
메서드가 있습니다. 기본적으로 Rich는 Python 구조와 표현 문자열에 대한 구문 강조를 수행합니다. 컬렉션(예: 사전 또는 목록)을 기록하면 Rich는 사용 가능한 공간에 맞도록 이를 인쇄합니다. 다음은 이러한 기능 중 일부의 예입니다.
from rich . console import Console
console = Console ()
test_data = [
{ "jsonrpc" : "2.0" , "method" : "sum" , "params" : [ None , 1 , 2 , 4 , False , True ], "id" : "1" ,},
{ "jsonrpc" : "2.0" , "method" : "notify_hello" , "params" : [ 7 ]},
{ "jsonrpc" : "2.0" , "method" : "subtract" , "params" : [ 42 , 23 ], "id" : "2" },
]
def test_log ():
enabled = False
context = {
"foo" : "bar" ,
}
movies = [ "Deadpool" , "Rise of the Skywalker" ]
console . log ( "Hello from" , console , "!" )
console . log ( test_data , log_locals = True )
test_log ()
위의 내용은 다음과 같은 출력을 생성합니다.
log 메소드가 호출된 지역 변수를 포함하는 테이블을 출력하는 log_locals
인수에 유의하세요.
log 메소드는 서버와 같이 오랫동안 실행되는 애플리케이션의 터미널에 로깅하는 데 사용될 수 있지만 디버깅에도 매우 유용합니다.
내장된 Handler 클래스를 사용하여 Python 로깅 모듈의 출력 형식을 지정하고 색상을 지정할 수도 있습니다. 출력의 예는 다음과 같습니다.
콘솔 출력에 이모티콘을 삽입하려면 두 개의 콜론 사이에 이름을 입력하세요. 예는 다음과 같습니다.
>> > console . print ( ":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:" )
? ? ? ? ?
이 기능을 현명하게 사용하시기 바랍니다.
Rich는 유니코드 상자 문자를 사용하여 유연한 테이블을 렌더링할 수 있습니다. 테두리, 스타일, 셀 정렬 등에 대한 다양한 서식 옵션이 있습니다.
위 애니메이션은 예제 디렉터리의 table_movie.py를 사용하여 생성되었습니다.
다음은 더 간단한 테이블 예입니다.
from rich . console import Console
from rich . table import Table
console = Console ()
table = Table ( show_header = True , header_style = "bold magenta" )
table . add_column ( "Date" , style = "dim" , width = 12 )
table . add_column ( "Title" )
table . add_column ( "Production Budget" , justify = "right" )
table . add_column ( "Box Office" , justify = "right" )
table . add_row (
"Dec 20, 2019" , "Star Wars: The Rise of Skywalker" , "$275,000,000" , "$375,126,118"
)
table . add_row (
"May 25, 2018" ,
"[red]Solo[/red]: A Star Wars Story" ,
"$275,000,000" ,
"$393,151,347" ,
)
table . add_row (
"Dec 15, 2017" ,
"Star Wars Ep. VIII: The Last Jedi" ,
"$262,000,000" ,
"[bold]$1,332,539,889[/bold]" ,
)
console . print ( table )
그러면 다음과 같은 출력이 생성됩니다.
콘솔 마크업은 print()
및 log()
와 동일한 방식으로 렌더링됩니다. 실제로 Rich가 렌더링할 수 있는 모든 항목은 헤더/행(다른 테이블도 포함)에 포함될 수 있습니다.
Table
클래스는 터미널의 사용 가능한 너비에 맞게 열 크기를 조정하고 필요에 따라 텍스트를 줄바꿈할 수 있을 만큼 똑똑합니다. 다음은 터미널을 위의 표보다 작게 만든 동일한 예입니다.
Rich는 깜박임 없는 여러 진행률 표시줄을 렌더링하여 장기 실행 작업을 추적할 수 있습니다.
기본 사용법의 경우 track
기능의 시퀀스를 래핑하고 결과를 반복합니다. 예는 다음과 같습니다.
from rich . progress import track
for step in track ( range ( 100 )):
do_step ( step )
여러 개의 진행률 표시줄을 추가하는 것은 그다지 어렵지 않습니다. 다음은 문서에서 가져온 예입니다.
원하는 세부 정보를 표시하도록 열을 구성할 수 있습니다. 기본 제공 열에는 완료율, 파일 크기, 파일 속도 및 남은 시간이 포함됩니다. 다음은 진행 중인 다운로드를 보여주는 또 다른 예입니다.
직접 시도해 보려면 진행 상황을 표시하면서 여러 URL을 동시에 다운로드할 수 있는 example/downloader.py를 참조하세요.
진행 상황을 계산하기 어려운 상황에서는 '스피너' 애니메이션과 메시지를 표시하는 상태 메서드를 사용할 수 있습니다. 애니메이션으로 인해 콘솔을 정상적으로 사용하는 데 방해가 되지 않습니다. 예는 다음과 같습니다.
from time import sleep
from rich . console import Console
console = Console ()
tasks = [ f"task { n } " for n in range ( 1 , 11 )]
with console . status ( "[bold green]Working on tasks..." ) as status :
while tasks :
task = tasks . pop ( 0 )
sleep ( 1 )
console . log ( f" { task } complete" )
그러면 터미널에 다음 출력이 생성됩니다.
스피너 애니메이션은 cli-spinner에서 빌려왔습니다. spinner
매개변수를 지정하여 스피너를 선택할 수 있습니다. 사용 가능한 값을 보려면 다음 명령을 실행하십시오.
python -m rich.spinner
위 명령은 터미널에 다음 출력을 생성합니다.
Rich는 안내선을 사용하여 나무를 렌더링할 수 있습니다. 트리는 파일 구조나 기타 계층적 데이터를 표시하는 데 이상적입니다.
트리의 레이블은 간단한 텍스트이거나 Rich가 렌더링할 수 있는 모든 것이 될 수 있습니다. 데모를 위해 다음을 실행하세요.
python -m rich.tree
그러면 다음과 같은 출력이 생성됩니다.
linux tree
명령과 유사하게 모든 디렉터리의 트리 보기를 표시하는 스크립트는 tree.py 예제를 참조하세요.
Rich는 동일하거나 최적의 너비로 깔끔한 열로 콘텐츠를 렌더링할 수 있습니다. 다음은 열에 디렉터리 목록을 표시하는 (MacOS/Linux) ls
명령의 매우 기본적인 복제본입니다.
import os
import sys
from rich import print
from rich . columns import Columns
directory = os . listdir ( sys . argv [ 1 ])
print ( Columns ( directory ))
다음 스크린샷은 API에서 가져온 데이터를 열에 표시하는 열 예제의 출력입니다.
Rich는 마크다운을 렌더링할 수 있으며 서식을 터미널로 변환하는 합리적인 작업을 수행합니다.
마크다운을 렌더링하려면 Markdown
클래스를 가져오고 마크다운 코드가 포함된 문자열로 구성하세요. 그런 다음 콘솔에 인쇄하십시오. 예는 다음과 같습니다.
from rich . console import Console
from rich . markdown import Markdown
console = Console ()
with open ( "README.md" ) as readme :
markdown = Markdown ( readme . read ())
console . print ( markdown )
그러면 다음과 같은 출력이 생성됩니다.
Rich는 pygments 라이브러리를 사용하여 구문 강조를 구현합니다. 사용법은 마크다운 렌더링과 유사합니다. Syntax
객체를 구성하고 콘솔에 인쇄합니다. 예는 다음과 같습니다.
from rich . console import Console
from rich . syntax import Syntax
my_code = '''
def iter_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
"""Iterate and generate a tuple with a flag for first and last value."""
iter_values = iter(values)
try:
previous_value = next(iter_values)
except StopIteration:
return
first = True
for value in iter_values:
yield first, False, previous_value
first = False
previous_value = value
yield first, True, previous_value
'''
syntax = Syntax ( my_code , "python" , theme = "monokai" , line_numbers = True )
console = Console ()
console . print ( syntax )
그러면 다음과 같은 출력이 생성됩니다.
Rich는 읽기 쉽고 표준 Python 추적보다 더 많은 코드를 표시하는 아름다운 추적을 렌더링할 수 있습니다. Rich를 기본 역추적 핸들러로 설정하여 포착되지 않은 모든 예외가 Rich에 의해 렌더링되도록 할 수 있습니다.
OSX에서의 모습은 다음과 같습니다(Linux에서도 유사).
모든 Rich 렌더링 가능 항목은 콘솔 프로토콜을 사용하며, 이를 사용하여 자신만의 Rich 콘텐츠를 구현할 수도 있습니다.
Rich가 제공하는 명령줄 애플리케이션에 대해서는 Rich CLI를 참조하세요. 구문 강조 코드, 마크다운 렌더링, 테이블에 CSV 표시 등을 명령 프롬프트에서 직접 수행할 수 있습니다.
터미널에서 정교한 사용자 인터페이스를 구축하는 데 사용할 수 있는 Rich의 자매 프로젝트인 Textual도 참조하세요.