什么是CR? 让我们用 Python 创建一个进度条并将其显示在终端上。
我是基础设施团队的 Saito。
今天我们来学习一下回车,并写一些脚本。
接下来,让我们在 Python 中使用回车符创建一个进度条。
什么是回车符(CR)?
回车符(CR)是一个特殊符号,用r表示。我想很多人都熟悉换行符n。
什么是回车符?
本来,在使用打字机时,手动将打印字符的称为回车的部分回车的动作称为回车(CR)。
移动到新行的动作称为换行(LF)。
迄今为止使用的所有操作系统都有与电子打字机兼容的历史,并且这个“r”以某种形式出现。
例如,在Windows操作系统中,换行符是rn。这可以解释为“返回到原始位置(CR),然后移动到新行(LF)”。
Unix、Mac、Linux、BSD等基于POSIX标准分别使用r和n。
当您使用换行符 n 时,光标将设置到新行的开头。
也就是说,n同时具有CR和LF的作用。另一方面,r具有CR的作用,它将光标返回到原来的位置。
尝试使用 r
我给出了每个操作系统的示例,但即使在编程语言中,r 和 n 也经常单独使用。
让我们在 python 中实际使用 r 。
$ python -c "import sys; sys.stdout.write('beyondrBn')" 超越
- “-c”是在 python 中编写单行代码的一个选项。
- 使用sys.stdout.write进行标准输出,并将字符串写入缓冲区(cache)。
现在,在'beyondrBn'中如何确定显示结果。
1.介绍字符串显示超出。此时光标位于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我在范围内(4):prog_bar()
sys.stdout.write 在显示在终端上之前会被缓存。
(实际上,print()内部使用了sys.stdout。)
通过使用sys.stdout.flush,缓存的信息被删除。
尝试写一个动画
我们还可以编写一个有趣的旋转栏动画。 (以下已确认可与python3配合使用)
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 , 结束='r')
它还可以用于各种其他目的。
我还在密码生成脚本中添加了类似槽的动画。
请扩展并使用它。