python - Python回车\ r选择性地不起作用
问题描述
所以我正在处理一个加载栏,该栏应该扩展到行尾然后消失(全部在 1 行),就好像它正在离开屏幕一样。回车在我的第一个 while 循环中起作用(当加载条进入屏幕时)。我的问题是当它应该“离开屏幕”时,'/r' 的东西不会返回马车并将每个条形迭代放在一个新的行上,从而破坏效果。这可以在我提供的代码片段的第二个 while 循环中找到:
import time
s=1
f=1
while True:
while s <= 128:
loadbar = ('█'*s)
print(loadbar, end='\r')
time.sleep(0.01)
s=s+1
while f <= 128:
loadbar = ' ' + loadbar[:-1]
print(loadbar, end='\r')
time.sleep(0.01)
f=f+1
s=1
f=1
我到处寻找类似的问题,而且我正在通过批处理文件从 python 3 运行脚本,所以我知道 IDLE Shell 没有问题,因为我知道 IDLE Shell 通常会忽略回车(至少从经验来看)。如果需要任何进一步的细节,请告诉我,非常感谢所有帮助!
解决方案
正如评论中所建议的那样,问题在于您的终端大小可能不是 128。最好不要猜到正确的数字。
改用os.get_terminal_size()函数或shutil.get_terminal_size()函数来告诉你终端的大小:你得到宽度和高度,这里称为列和行,所以你需要的是列。
这是一个基于您发布的示例的示例工作代码,它应该可以满足您的需求(我刚刚切换'█'
)"="
:
import time
import os
s=1
f=1
n_cols = os.get_terminal_size().columns
while True:
while s <= n_cols:
loadbar = '='*s
print(loadbar, end='\r')
time.sleep(0.01)
s=s+1
while f <= n_cols:
loadbar = ' '*f + "="*(n_cols-f)
print(loadbar, end='\r')
time.sleep(0.01)
f=f+1
s=1
f=1
推荐阅读
- python - 在 Windows 上使用 pyinstaller 从 .py 构建 .dmg 文件?
- regex - 未找到 Mod 重写页面
- python - 如何检测模糊的斑点?
- icu - 显示针对不同时区格式化的 ICU UDate
- excel - 通过引用命名范围使用 SMXMY2()
- python - 根据字典和当前 Groupby 之间的差异创建行
- c# - 如何将 BlockingCollection 绑定到 WPF Listivew
- python - Python用点划定的字符串设置字典嵌套键
- c# - 在非主 TabItem 内时,MVVM 绑定在 DataGrid 列标题中不起作用
- c# - SonarQube 配置问题