Python中 '\r' 的实际应用
2018-01-05 本文已影响438人
高正杰
1. 知识储备
\r
表示将光标的位置回退到本行的开头位置
\b
表示将光标的位置回退一位
在 python
语言中, 使用 print
打印输出时,默认是会进行换行的。如何让其不换行呢?
- 在
python 2.x
中的语法是在print
语句的末尾添加逗号,例如print x,
;或者使用sys.stdout.write()
对标准输出进行重定向,如此文所示 https://segmentfault.com/q/1010000002810865 。 - 在
python 3.x
中,print
成为了一个独立的函数,有一个end
参数,可以指定输出的结束符,默认是\n
。
本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10
2. 在命令行中实现倒计时功能
# __author__ = "Gao Zhengjie"
# __date__ = "2018/1/5"
# __Desc__ = 在一行中不断刷新倒计时
import time
count_down = 10 # 设置倒计时时间,单位:秒
for i in range(count_down, 0, -1):
msg = u"\r系统将在 " + str(i) + "秒 内自动退出"
print(msg, end="")
time.sleep(1)
end_msg = "结束" + " "*(len(msg)-len("结束")) # 如果单纯只用“结束”二字,无法完全覆盖之前的内容
print(u"\r"+end_msg)
3. 在命令行中实现“转圈”功能
# __author__ = "Gao Zhengjie"
# __date__ = "2018/1/5"
# __Desc__ = 在一行中不断刷新转圈
import time
count_down = 10 # 设置倒计时时间,单位:秒
interval = 0.25 # 设置屏幕刷新的间隔时间,单位:秒
for i in range(0, int(count_down/interval)):
ch_list = ["\\", "|", "/", "-"]
index = i % 4
msg = "\r程序运行中 " + ch_list[index]
print(msg, end="")
time.sleep(interval)
print(u"\r结束" + " "*len(msg))
4. 在命令行中实现进度条功能
# __author__ = "Gao Zhengjie"
# __date__ = "2018/1/5"
# __Desc__ = 在命令行中实现进度条功能
import time
count_down = 10 # 设置倒计时时间,单位:秒
interval = 1 # 设置屏幕刷新的间隔时间,单位:秒
for i in range(0, int(count_down/interval)+1):
print("\r"+"▇"*i+" "+str(i*10)+"%", end="")
time.sleep(interval)
print("\n加载完毕")
注:方块可以从输入法的特殊符号中进行输入。