使用马车返回在Python中创建进度栏

我叫斋藤,是一名基础设施工程师。

今天我想向大家介绍一下回车符(CR),并编写一些脚本来向大家展示
如何在 Python 中使用回车符来创建进度条。

什么是回车符(CR)?

回车符(CR)是一个特殊符号,用 r 表示。许多人可能熟悉换行符 n。

什么是回车符?

最初,在使用打字机时,手动将打印字符的字车部分放回原位的动作称为回车(CR)。

移动到新行的操作称为换行(LF)。

当今使用的所有操作系统都有与电子打字机兼容的历史,而这个“r”都以某种形式出现。

例如,在 Windows 操作系统中,换行符是 rn,可以解释为“回到原始位置 (CR) 然后移动到新的一行 (LF)”。

Unix、Mac、Linux、BSD 等系统根据 POSIX 标准分别使用 r 和 n。

使用换行符 n 时,光标会定位到新行的开头。

换句话说,n 既是回车符又是换行符,而 r 是回车符,它将光标返回到其原始位置。

尝试使用 r

我已经给出了不同操作系统的例子,但即使在编程语言中,r 和 n 也经常分开使用。

我们来实际尝试一下在 Python 中使用 R。

$ python -c "import sys; sys.stdout.write('beyondrBn')" Beyond

- “-c”是Python中编写单行代码的选项。-
标准输出使用sys.stdout.write,并将字符串写入缓冲区(缓存)。

那么,在“beyondrBn”中,显示结果是如何确定的呢?

1. 首先,显示字符串“beyond”。此时,光标位于“d”之后。2
. 因为存在“r”,光标移动到“b”的开头。3
. 这次,B 被打印在“b”之上。4
. 因为存在“n”,开始换行。

这样,r 就可以在同一行上多次写入字符。

创建进度条

利用上述特性,您可以创建一个在命令行运行的进度条。以下是用 Python 编写的进度条示例。

import sys, time def prog_bar(length=100): for i in range(length): sys.stdout.write('#'*i + 'r') sys.stdout.flush() time.sleep(0.01) for i in range(4): prog_bar()

`sys.stdout.write` 会将数据缓存起来,然后再显示在终端上。
(实际上,`print()` 函数内部也使用了 `sys.stdout`。)
使用 `sys.stdout.flush` 会清除缓存的信息。

尝试编写动画

我们还可以编写一个有趣的动画,让进度条旋转。(以下代码已验证可在 Python 3 中运行。)

import time space = '.' bar = '-|/' length = 100 printset = (('{0}{1}r'.format (space*(i-length//2) if i > length//2 else '', bar[i%4]), time.sleep(0.05)) for i in range(length)) for i in printset: print(i[0], end='') print(' '*length, end='r')

它还可以用于多种其他用途。
我还为密码生成脚本添加了类似老虎机的动画效果。
请尝试扩展并体验它。

如果您想咨询开发专业人员

在《超越》中,我们将富裕的往绩,技术和专有技术结合在系统开发中,迄今为止,我们已经使用OSS技术和云技术(例如AWS)来创建具有可靠质量和出色成本性能的Web系统的合同开发。

我们还使用Web系统/应用基础架构的构建和操作的技术和专业知识来研究自己API的服务器端/后端开发和链接开发,用于大规模,高度加载的游戏,应用程序和数字内容。

如果您在开发项目方面遇到麻烦,请访问下面的网站。

●Web系统开发
●服务器端开发(API/DB)

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
5,762
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者