안녕하세요 warehouse입니다.
오늘은 파이썬을 구현하면서 출력할 때,
화면을 새로고침 하면서 출력을 업데이트 하는 방법을 알아보려고 합니다.
사실 이 부분은 엄청날 스킬은 아니고
개발하면서 한번 쯤 검색해 볼만 한 팁 인것 같아요.
저도 파이썬을 이용한 사용자 인터페이스 구현을 하다가
출력이 갱신되었으면 하는 마음에 찾아보고 정리해 둔 내용이니
저와 같은 처지(?) 에 놓이신 분들도 참고 하셨으면 좋겠습니다.
언제 필요한가?
제가 필요한 경우는 아래와 같은 상황이었어요.
1. 사용자에게 지금까지 대기 한 시간을 표현해야 한다.
2. 줄줄이 소세지로 터미널 스크롤이 생기지 않았으면 좋겠다.
일단 1. 을 먼저 구현해 보면 아래 예시처럼 만들어질거에요.
10초를 대기했다고 생각하면.. 10번 수준의 루프가 돌아야겠죠?
$ python3 stdout_refresh.py
0
1
2
3
4
5
6
7
8
9
이렇게 대기시간이 계속해서 늘어나다 보면..
창이 계속 올라가면서 터미널이 지저분 해 지게 됩니다.
이제 2. 에 대한 요구사항을 처리해 봅니다.
혹시 리눅스에서 "clear" 라는 명령어를 사용해 보셨을까요?
리눅스 터미널 clear 명령어는 사용하면 현재 터미널의 화면을 정리해 줍니다.
clear
한번 타이밍 하면 터미널이 싹 정리되는 것을 볼 수 있습니다.
저는 요구사항 2. 에 대해 clear 를 활용할 예정입니다.
clear 타이핑 효과를 위해 서는 python 표준 라이브러리 os 의 system 함수를 사용해 봅니다.
import os
for i in range(0,10):
os.system("clear")
print (str(i) + " seconds elapsed.")
system 함수 설명은 다음과 같습니다.
Execute the command (a string) in a subshell.
명령어를 쉘에서 실행하는 효과를 내는데, 우리는 "clear" 를 쉘에서 타이핑 하는 코드를 작성하였습니다.
위 코드를 해석하면 print 이전에 화면을 한 번 정리하고, 그 다음 print 출력 한다는 의미를 가지고 있습니다.
결과는 다음과 같습니다.
9 seconds elapsed.
0~9 까지 출력을 하는 print 함수 중 마지막 내용만 출력이 되었습니다.
위 코드는 sleep 이 들어있지 않아서 그저 9 seconds elapsed 만 출력 된 것으로 보이지만,
실제로는 그렇지는 않습니다.
0~ 8 초 에 대한 내용이 출력되었지만,
그 내용들은 clear 명령에 의해 터미널에서 정리가 된 것이죠.
이렇게 한 터미널에서 한줄로 간략하게 표시해 주는 것이 지저분하지 않게 실시간 메시지를 출력해 주는 데 상당히 도움이 되곤 합니다.
실제로 터미널에서 watch 라는 명령어도 이 목적으로 사용이 되고 있어요.
watch 에 대한 내용은 참고가 될만한 링크가 있어서 공유드리고 오늘의 포스팅을 마치겠습니다.
https://phoenixnap.com/kb/linux-watch-command
감사합니다.
'CS > Python' 카테고리의 다른 글
[python3] 파이썬에서 이터레이터 (Iterator) 란? (0) | 2022.11.03 |
---|---|
Python3 print 함수 출력 글자 색 바꿔서 출력하는 방법 (0) | 2022.08.05 |
[파이썬 개발자 로드맵] Functions - 함수 만들어서 사용하는 방법 (0) | 2022.07.04 |
[파이썬 개발자 로드맵] Exceptions - Python 에서 예외(Exception)를 일으키고 처리하는 방법 , try ... except ... else 의 의미 (0) | 2022.07.02 |
python 함수 리턴 밑줄 변수 "_ " 의 의미 (0) | 2022.06.16 |