【问题标题】:Is there a way to simulate background console activity in Python?有没有办法在 Python 中模拟后台控制台活动?
【发布时间】:2021-10-19 12:27:34
【问题描述】:

我可能用奇怪的方式表达了标题,但基本上我希望控制台显示:

'正在加载...'

点循环的地方,在同一行。

  1. '正在加载'
  2. '正在加载。'
  3. '正在加载..'
  4. '正在加载...'

我的想法是有四个不同的字符串,打印一个,清除行,打印下一个,等等。

这可以在 Python 中实现吗?也许使用 Windows 控制台命令?

谢谢

【问题讨论】:

标签: python string windows loops console


【解决方案1】:

看到这个: Python Progress Bar

您可以使用进度条,看起来更好(摘自链接)
链接中的代码示例:

from time import sleep
from tqdm import tqdm
for i in tqdm(range(10)):
    sleep(3)

 60%|██████    | 6/10 [00:18<00:12,  0.33 it/s]

【讨论】:

    【解决方案2】:

    如果您在print() 中使用end="\r",则它不会转到下一行,但会移至行首 - 然后您可以在同一行再次写入。

    import time
    
    print("Loading", end="\r")
    time.sleep(1)
    print("Loading.", end="\r")
    time.sleep(1)
    print("Loading..", end="\r")
    time.sleep(1)
    print("Loading...", end="\r")
    time.sleep(1)
    
    print()  # move to next line
    

    当您必须更改行中的文本时,这会很有用。 但是对于添加点,使用end="" 在同一行写入会更简单

    import itme
    
    print("Loading", end="")
    
    for _ in range(3):
        time.sleep(1)
        print(".", end="")
    
    print()  # move to next line
    

    部分模块使用此方法绘制progressbar


    顺便说一句:

    您也可以\rend="" 将光标保持在行尾

    import time
    
    print("\rLoading", end="")
    time.sleep(1)
    print("\rLoading.", end="")
    time.sleep(1)
    print("\rLoading..", end="")
    time.sleep(1)
    print("\rLoading...", end="")
    time.sleep(1)
    
    print()  # move to next line
    

    如果新文本比旧文本短,则应在末尾写空格以删除以前的文本。

    import time
    
    print("\r....", end="")
    time.sleep(1)
    print("\r... ", end="")
    time.sleep(1)
    print("\r.. ", end="")
    time.sleep(1)
    print("\r. ", end="")
    time.sleep(1)
    print("\r ", end="")
    
    print()  # move to next line
    

    如果您想同时显示其他文本,则可能需要使用cursesurwindnpyscreen 等模块,该模块可以使用特殊代码将光标移动到(某些)终端的不同位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2015-05-05
      • 2011-12-21
      • 1970-01-01
      相关资源
      最近更新 更多