「Python Recipes」に戻る |
---|
テスト環境
OS: Ubuntu10.10
Python2.6.6
Python2.5.2
Python3.1.2:
エスケープシーケンスで、コンソール制御(メーターと残り時間と顔文字)¶
エスケープシーケンスで、コンソールを制御してアニメーションをさせようというものです。
Windows 2000 以外の MS-DOS プロンプトや Linux で使えるらしいです。(引用元によると)
詳しくは下記のサイトを参照してください。
Note
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# Author: Iyori Komiyama
# Contact: hazimarino@gmail.co.jp
"""\
メーターと残り時間と顔文字を表示する
"""
from __future__ import unicode_literals
import sys
from time import sleep
def stdwrite(msg):
try:
sys.stdout.write(msg.encode('utf8'))
except TypeError:
sys.stdout.write(msg)
finally:
sys.stdout.flush()
ani = ("(^_^)", "(-_-)", "(*x*)")
# エスケープシーケンスをつかってカーソルを上に持っていく
anf = lambda x: " {0}\n\x1b[2A".format(ani[x])
def main(time):
time = time * 100
for i in range(1, time + 1):
rate = i * 71 // time
times = ((time + 1) - i) // 100
meter = "\r|{0}{1}| {2}%\n".format(
("=" * rate), (' ' * (71 - rate)), i * 100 // time)
timer = "\r残り {0:#02d} 秒".format(times)
if times % 2 == 0:
anime = anf(1)
elif times % 3 == 0:
anime = anf(2)
elif times % 5 == 0 and times % 7 == 0:
anime = anf(3)
else:
anime = anf(0)
stdwrite(meter)
stdwrite(timer)
stdwrite(anime)
sleep(0.01)
# 終了する前にカーソルを下に持っていく
sys.stderr.write('\x1b[2B')
if __name__ == "__main__":
main(20)
「Python Recipes」に戻る |
---|
0 件のコメント:
コメントを投稿