Python 3 Scripts
Python 3 Scripts
コンソール文字出力の上書き
Python3のコンソールへの文字の標準出力は、その行であれば上書きして書き換えることができる。 画面全体、複数行にわたる書き換えの場合には別のライブラリ等を利用した方法になる。
Carriage Return(CR)を使用してキャレットを行末から行頭(左端)に戻す。
index
サンプルコード
import sys, time for num, i in enumerate(range(10)): sys.stdout.write("\r%d" % num) sys.stdout.flush() time.sleep(0.05) #!/usr/bin/env python #-*- coding:utf-8 -*- print("END") #B import sys import time for i in range(10): sys.stdout.write("\r%d" % i) sys.stdout.flush() time.sleep(0.1) print("END") # from time import sleep for i in range(10): print('\r', i, end='') sleep(0.1) print("END") # import math import sys import time END = 170 MAX_LEN = 30 def get_progressbar_str(progress): BAR_LEN = int(MAX_LEN * progress) return ('[' + '=' * BAR_LEN + ('>' if BAR_LEN < MAX_LEN else '') + ' ' * (MAX_LEN - BAR_LEN) + '] %.1f%%' % (progress * 100.)) for i in range(END + 1): time.sleep(0.01) progress = 1.0 * i / END sys.stderr.write('\r\033[K' + get_progressbar_str(progress)) sys.stderr.flush() sys.stderr.write('\n') sys.stderr.flush() print("END") # for i in range(10): sys.stdout.write("*") sys.stdout.flush() time.sleep(0.1) print() print("END") # import sys import time for i in range(10): sys.stdout.write("\r{}".format(i)) sys.stdout.flush() time.sleep(0.1) print() print("END") # import sys, time for i in range(10): sys.stdout.write("\r%d" % i) sys.stdout.flush() time.sleep(0.1) print("END") # def override_print(message, line_length = 100): if len(message) > line_length: message = message[:line_length - 3] + "..." sys.stdout.write((u"\r{0:<" + str(line_length) + "}").format(message)) sys.stdout.flush()
プロセスバー表現
import time import sys sys.stdout.write('['+' '*10+']') # moved *11 on account of ] sys.stdout.write('\b'*11) sys.stdout.flush() for i in range(10): time.sleep(1) sys.stdout.write('.') sys.stdout.flush() sys.stdout.write('] Done!\n') print("END") import time import sys sys.stdout.write('['+' '*10+']') sys.stdout.write('\b'*10) sys.stdout.flush() for i in range(10): time.sleep(1) sys.stdout.write('\b' + '=') if(i < 9): sys.stdout.write('>') sys.stdout.flush() sys.stdout.write('] Done!\n') print("END") import time import sys sys.stdout.write('['+' '*10+'] 0%') sys.stdout.flush() for i in range(10): time.sleep(1) sys.stdout.write('\b'*(15-i) + '=') if(i < 9): sys.stdout.write('>') sys.stdout.write(' '*(8-i) + '] ' + str(i+1) + '0%') sys.stdout.flush() # overwrite the percentage sign and write Done instead sys.stdout.write('\b\b\b\bDone!\n') print("END") import time for x in range (0,5): b = "Loading" + "." * x print (b, end="\r") time.sleep(1)