BuNa_
IT Story
BuNa_
전체 방문자
오늘
어제
  • 분류 전체보기 (117)
    • CS (14)
      • 운영체제 (8)
      • 네트워크 (0)
      • Design Pattern (1)
      • OOP (4)
    • 대외활동 (24)
      • 우아한테크코스 (14)
      • DND 동아리 (4)
      • UMC 동아리 (5)
      • 해커톤 (1)
    • Android (29)
      • MVVM (2)
      • 스터디 (11)
      • Compose (3)
      • Unit Test (1)
    • Project (5)
      • 어따세워 (5)
      • DnD 과외 서비스 (0)
    • Programming (11)
      • Kotlin (4)
      • 파이썬 (7)
    • Git (1)
    • 인공지능 (22)
    • 백준 (8)
    • 기타 (3)
      • IntelliJ (1)
      • 일상 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • K-means
  • 선형회귀
  • 딥러닝
  • MVVM
  • 운영체제
  • 객체지향 생활체조
  • 우테코 프리코스
  • 백준
  • 우테코
  • External fragmentation
  • Baekjoon
  • 컴공선배
  • 인공지능 분류
  • 다이나믹 프로그래밍
  • Ai
  • RecyclerView
  • Android
  • 외부 단편화
  • 우아한테크코스
  • 셀레니움
  • 인공지능
  • UMC
  • k-means++
  • 파이썬
  • ViewModel
  • 우테코 5기
  • 원시값 포장
  • Compose
  • 어따세워
  • 안드로이드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BuNa_

IT Story

[파이썬] 코랩에서 Python Rich 라이브러리를 사용하여 텍스트 출력을 예쁘게 꾸며보자
Programming/파이썬

[파이썬] 코랩에서 Python Rich 라이브러리를 사용하여 텍스트 출력을 예쁘게 꾸며보자

2021. 6. 15. 14:30

 

 

이번 포스팅에서는 파이썬의 Rich 라이브러리를 사용해서 딱딱해 보이기만 하는 콘솔 텍스트를

조금 더 예쁘게 출력하는 방법에 대해 알아보도록 하겠다.

제목은 코랩에서라고 적어놨지만 다른 일반적인 환경에서도 적용된다는 점을 알아두자.

 

!pip install rich
!python -m rich

 

우선, rich 라이브러리를 사용하기 위해서 위 명령어를 사용하여 rich를 설치해주고,

!python -m rich 명령어로 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() 메소드로 각 컬럼에 들어갈 데이터를 입력해주고 테이블을 출력하면 결과가 나타난다.

 

 

'Rich 라이브러리의 Table 클래스를 사용하여 데이터를 출력한 결과'

 

화면을 보면 마치 데이터베이스를 출력한 것처럼 테이블 형태를 보여주고 있다.

또한, 직업에 따라 색상을 변경해주어 출력이 더 예쁘고 깔끔해 보이는 효과가 있다.

 

 

from rich import inspect

my_list = ['apple', 'banana', 'orange', 'pineapple']
inspect(my_list, methods=True)

 

Rich 라이브러리의 또 다른 장점은 inspect 기능을 제공한다는 점이다.

객체를 예쁘게 출력해줌과 동시에, 객체가 가지고 있는 메소드에 대한 종류와 설명해 대해 출력할 수 있다.

 

 

'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 클래스에 전달하여 생성한 객체를 출력해보자.

 

 

'마크다운(Markdown) 클래스에 전달하기 전의 md파일'

 

'마크다운(Markdown) 클래스에 md파일을 전달하여 출력한 결과'

 

위 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
    'Programming/파이썬' 카테고리의 다른 글
    • [파이썬] Python Sqlite3 모듈을 사용하여 Database를 생성하고 데이터를 관리해보자
    • [파이썬] Python SMTP 모듈을 사용하여 Email 전송하기 / SMTPAuthenticationError : 534 오류 해결 방법
    • [Develop/파이썬] 셀레니움 크롤링(Crawling) - Tistory 포럼 자동 댓글 프로그램 문제점 개선하기
    • [파이썬] 코랩(CoLab)에서 구글 드라이브 파일(csv, txt ...) 가져오기
    BuNa_
    BuNa_
    안드로이드 개발자를 향해 달리고 있는 공대생입니다! 🧑 Android, Kotlin, Java, Python 등 학습하고 있는 내용과 프로젝트를 주로 업로드하고 있습니다. 지적과 조언은 언제나 환영입니다!😊 github : https://github.com/tmdgh1592

    티스토리툴바