이번 포스팅에서는 파이썬의 Rich 라이브러리를 사용해서 딱딱해 보이기만 하는 콘솔 텍스트를
조금 더 예쁘게 출력하는 방법에 대해 알아보도록 하겠다.
제목은 코랩에서라고 적어놨지만 다른 일반적인 환경에서도 적용된다는 점을 알아두자.
!pip install rich
!python -m rich
우선, rich 라이브러리를 사용하기 위해서 위 명령어를 사용하여 rich를 설치해주고,
!python -m rich 명령어로 Rich 라이브러리에 대한 설명을 확인해보자.
그럼 이렇게 Rich 라이브러리를 사용하여 나타낼 수 있는 기능들에 대해 출력해준다.
문장의 색상을 변경할 수 있으며, 밑줄, Bold체, Italic체, 하이라이트, 마크다운, 테이블 등을 사용할 수 있다고 말해주고 있다.
위 기능들을 하나하나 알아보도록 하자.
from rich import print
from rich.console import Console
console = Console()
console.print('안녕하세요. [bold cyan]개발자 BuNa_[/bold cyan]입니다.😊')
console.print('[i u]Rich 라이브러리[/i u] 에 대해서 소개해드리겠습니다.')
HTML을 한 번쯤은 사용해본 사람이라면 조금 이해하기 쉬울 수 있다.
그 이유는 html 태그와 비슷한 방식으로 문장을 꾸밀 수 있기 때문이다.
Rich에서는 html과 달리 </>가 아닌 [/]로 문장을 설정할 수 있다.
위 코드에서는 '개발자 BuNa_'라는 부분을 bold 체와 Cyan색상으로 변경하여 출력하고 이모티콘을 함께 출력해보겠다.
(파이썬에서는 일반적인 방법으로 이모티콘 출력이 되지 않는다.)
그 밑에는 Italic체와 Underline을 사용하여 'Rich 라이브러리' 부분을 강조해볼 것이다.
출력 결과 코드로 적용한 효과들이 모두 정상적으로 적용된 모습을 확인할 수 있다.
확실히 그냥 문장을 출력했을 때보다는 훨씬 깔끔하고 예쁜 모습이다.
다음은 테이블 형식으로 데이터를 출력하는 방법에 대해 알아보자.
#https://lsjsj92.tistory.com/588
from rich.table import Column, Table
table = Table(show_header=True, header_style="bold red")
#테이블 컬럼 추가
table.add_column("닉네임", style='dim', width=15)
table.add_column("직업", width=10, justify='center')
table.add_column("레벨", width=8, justify='center')
table.add_column("데미지", width=10, justify='center')
#컬럼당 데이터 추가
table.add_row('zl존전사', '[b red]전사[/b red]', '37', '1200')
table.add_row('올럭pyo도', '[b purple]도적[/b purple]', '42', '2450')
table.add_row('검은빡빡법사2', '[b cyan]마법사[/b cyan]', '24', '650')
console.print(table)
먼저 예시를 위해 Table 클래스를 사용하여 게임 계정 데이터를 보여주기 위한 table 객체를 생성해준다.
우리는 테이블의 head부분의 텍스트를 붉은색과 Bold체로 출력할 것이다.
그리고 add_column() 메소드를 통해 컬럼을 추가해주면 되는데, 우리는 게임 데이터를 출력하기로 했기 때문에
유저의 닉네임, 직업, 레벨, 데미지를 표현해보겠다.
그리고 add_row() 메소드로 각 컬럼에 들어갈 데이터를 입력해주고 테이블을 출력하면 결과가 나타난다.
화면을 보면 마치 데이터베이스를 출력한 것처럼 테이블 형태를 보여주고 있다.
또한, 직업에 따라 색상을 변경해주어 출력이 더 예쁘고 깔끔해 보이는 효과가 있다.
from rich import inspect
my_list = ['apple', 'banana', 'orange', 'pineapple']
inspect(my_list, methods=True)
Rich 라이브러리의 또 다른 장점은 inspect 기능을 제공한다는 점이다.
객체를 예쁘게 출력해줌과 동시에, 객체가 가지고 있는 메소드에 대한 종류와 설명해 대해 출력할 수 있다.
우리는 list 객체를 전달하였기 때문에, list에 있는 요소들과 각종 메소드를 나타내 주고 있다.
메소드의 종류는 물론 매개변수와 설명에 대해 알 수 있다.
from rich.markdown import Markdown
with open('/content/readme.md') as readme:
markdown = Markdown(readme.read())
console.print(markdown)
그다음은 마크다운(Markdown) 기능이다.
해당 기능은 md파일을 매우 깔끔하게 화면상에 나타내 준다.
설명을 위해 아래의 md파일을 with open 구문으로 읽어 들여, Markdown 클래스에 전달하여 생성한 객체를 출력해보자.
위 md파일이 이렇게 보기 좋게 출력되었음을 확인할 수 있다.
출력 전과 다른 점은 주요 목차, 순서에 색상과 기호, 테두리가 적용되었는 것이다.
from rich.progress import track
import time
for step in track(range(100)):
time.sleep(1)
마지막으로 알아볼 것은 프로그레스 바(Progress Bar)이다.
Rich 라이브러리에서는 프로그램의 진행 정도를 시각적으로 나타낼 수 있는 Bar 기능을 제공해주는데,
코드에서는 1초에 1%씩 100초 동안 게이지가 차오르도록 설정하였다.
그럼 이렇게 작업하고 있는 과정을 퍼센테이지, 소요 시간과 함께 출력하여 사용자가 프로그램이
얼마나 진행되고 있는지를 확인할 수 있다.
Rich 라이브러리는 이렇게 프로그램의 기능을 향상해주기보다는 사용자가 프로그램을 사용할 때,
시각적으로 조금 더 깔끔하게 이용할 수 있도록 도와준다는 장점이 존재한다.
전체 소스 코드 :
https://colab.research.google.com/drive/1_JVjv9MNWnsgpU_ZxG6xgrnApdANRByJ?usp=sharing
👍클릭으로 구독하기👍
(이해가 다소 힘들거나, 틀린 부분이 있다면 댓글 부탁드리겠습니다! 😊)
💖도움이 되셨다면 '구독'과 '공감' 부탁드립니다!💖
'Programming > 파이썬' 카테고리의 다른 글
[파이썬] Python Sqlite3 모듈을 사용하여 Database를 생성하고 데이터를 관리해보자 (10) | 2021.06.14 |
---|---|
[파이썬] Python SMTP 모듈을 사용하여 Email 전송하기 / SMTPAuthenticationError : 534 오류 해결 방법 (27) | 2021.06.07 |
[Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 프로그램 문제점 개선하기 (45) | 2021.06.06 |
[파이썬] 코랩(CoLab)에서 구글 드라이브 파일(csv, txt ...) 가져오기 (23) | 2021.06.05 |
[Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 등록 프로그램 (37) | 2021.06.04 |