[PYTHON] 회전하는 명령 행 커서를 만드는 방법은 무엇입니까?
PYTHON회전하는 명령 행 커서를 만드는 방법은 무엇입니까?
파이썬을 사용하여 단말기에서 회전 커서를 인쇄하는 방법이 있습니까?
해결법
-
==============================
1.당신의 터미널이 \ b를 처리한다고 가정하고, 이와 같은 것
당신의 터미널이 \ b를 처리한다고 가정하고, 이와 같은 것
import sys import time def spinning_cursor(): while True: for cursor in '|/-\\': yield cursor spinner = spinning_cursor() for _ in range(50): sys.stdout.write(next(spinner)) sys.stdout.flush() time.sleep(0.1) sys.stdout.write('\b')
-
==============================
2.좋은 pythonic 방법 itertools.cycle를 사용하는 것입니다 :
좋은 pythonic 방법 itertools.cycle를 사용하는 것입니다 :
import itertools, sys spinner = itertools.cycle(['-', '/', '|', '\\']) while True: sys.stdout.write(spinner.next()) # write the next character sys.stdout.flush() # flush stdout buffer (actual character display) sys.stdout.write('\b') # erase the last written char
또한 http://www.interclasse.com/scripts/spin.php와 같이 긴 함수 호출 중에 회 전자를 표시하는 스레딩을 사용할 수도 있습니다.
-
==============================
3.사용하기 쉬운 API (별도의 스레드에서 실행 스피너가 실행 됨) :
사용하기 쉬운 API (별도의 스레드에서 실행 스피너가 실행 됨) :
import sys import time import threading class Spinner: busy = False delay = 0.1 @staticmethod def spinning_cursor(): while 1: for cursor in '|/-\\': yield cursor def __init__(self, delay=None): self.spinner_generator = self.spinning_cursor() if delay and float(delay): self.delay = delay def spinner_task(self): while self.busy: sys.stdout.write(next(self.spinner_generator)) sys.stdout.flush() time.sleep(self.delay) sys.stdout.write('\b') sys.stdout.flush() def start(self): self.busy = True threading.Thread(target=self.spinner_task).start() def stop(self): self.busy = False time.sleep(self.delay)
필요한 경우 코드의 아무 곳이나 :
spinner = Spinner() spinner.start() # ... some long-running operations # time.sleep(3) spinner.stop()
-
==============================
4.해결책 :
해결책 :
import sys import time print "processing...\\", syms = ['\\', '|', '/', '-'] bs = '\b' for _ in range(10): for sym in syms: sys.stdout.write("\b%s" % sym) sys.stdout.flush() time.sleep(.5)
핵심은 백 스페이스 문자 '\ b'를 사용하고 stdout을 플러시하는 것입니다.
-
==============================
5.물론 가능합니다. 그것은 "커서"가 회전하는 것처럼 보이게하는 네 개의 문자 사이에 백 스페이스 문자 (\ b)를 인쇄하는 것입니다. (-, \, |, /).
물론 가능합니다. 그것은 "커서"가 회전하는 것처럼 보이게하는 네 개의 문자 사이에 백 스페이스 문자 (\ b)를 인쇄하는 것입니다. (-, \, |, /).
-
==============================
6.저주 모듈. addstr () 및 addch () 함수를 살펴 보겠습니다. 결코 그것을 사용하지 마십시오.
저주 모듈. addstr () 및 addch () 함수를 살펴 보겠습니다. 결코 그것을 사용하지 마십시오.
-
==============================
7.보다 고급 콘솔 조작을 원한다면, 유닉스에서는 curses python 모듈을 사용할 수 있고, Windows에서는 curses 라이브러리와 동일한 기능을 제공하는 WConio를 사용할 수 있습니다.
보다 고급 콘솔 조작을 원한다면, 유닉스에서는 curses python 모듈을 사용할 수 있고, Windows에서는 curses 라이브러리와 동일한 기능을 제공하는 WConio를 사용할 수 있습니다.
-
==============================
8.멋진 진행 바 모듈 가져 오기 - http://code.google.com/p/python-progressbar/ RotatingMarker를 사용하십시오.
멋진 진행 바 모듈 가져 오기 - http://code.google.com/p/python-progressbar/ RotatingMarker를 사용하십시오.
-
==============================
9.
#!/usr/bin/env python import sys chars = '|/-\\' for i in xrange(1,1000): for c in chars: sys.stdout.write(c) sys.stdout.write('\b') sys.stdout.flush()
경고 : 내 경험에 의하면 이것은 모든 터미널에서 작동하지 않습니다. Unix / Linux에서 이것을 수행하는 좀 더 강력한 방법은 curses 모듈을 사용하는 것이 더 복잡합니다. Windows에서는 작동하지 않습니다. 백그라운드에서 진행되는 실제 처리로 어떻게 느려지는지를 알고 싶을 것입니다.
-
==============================
10.
import sys def DrowWaitCursor(self, counter): if counter % 4 == 0: print("/",end = "") elif counter % 4 == 1: print("-",end = "") elif counter % 4 == 2: print("\\",end = "") elif counter % 4 == 3: print("|",end = "") sys.stdout.flush() sys.stdout.write('\b')
이것은 매개 변수가있는 함수를 사용하는 또 다른 솔루션이 될 수 있습니다.
-
==============================
11.여기에 - 가볍고 간단합니다.
여기에 - 가볍고 간단합니다.
import sys import time idx = 0 cursor = ['|','/','-','\\'] #frames of an animated cursor while True: sys.stdout.write(cursor[idx]) sys.stdout.write('\b') idx = idx + 1 if idx > 3: idx = 0 time.sleep(.1)
-
==============================
12.크고 단순한 해결책 :
크고 단순한 해결책 :
import sys import time cursor = ['|','/','-','\\'] for count in range(0,1000): sys.stdout.write('\b{}'.format(cursor[count%4])) sys.stdout.flush() # replace time.sleep() with some logic time.sleep(.1)
분명한 한계가 있지만 다시 원유가있다.
from https://stackoverflow.com/questions/4995733/how-to-create-a-spinning-command-line-cursor by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 두 개의 파이썬 루프를 동시에 실행하려면 어떻게해야합니까? (0) | 2018.10.28 |
---|---|
[PYTHON] 팬더 DataFrame에서 특정 셀의 값을 iloc으로 설정 (0) | 2018.10.28 |
[PYTHON] Mac OS X에서 현재 활성 창 / 문서의 제목 가져 오기 (0) | 2018.10.28 |
[PYTHON] bool ()과 operator.truth () 사이의 차이점은 무엇입니까? (0) | 2018.10.27 |
[PYTHON] 프로그래밍 방식으로 Tensorboard 파일을 어떻게 읽습니까? (0) | 2018.10.27 |