python-3.x 你能一次打印多行然后用回车符返回它们,这样它们总是停留在同一个位置吗?

f1tvaqid  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(92)

我正在写一个程序,它从PSUtil获得当前CPU利用率,解析它,并显示给用户。

def getAllCoreData_Parsed():
    output = ""

    for count, cpu in enumerate(ps.cpu_percent(percpu=True)):
        output += f"Core {count:<2}\t{cpu:>5}%\033[0;37;48m\n"

    return output


while True:
   print(
        getAllCoreData_Parsed(),
        end="\r"
    )

    time.sleep(1)

    print(
        "\x1b[K",
        end="\r"
    )

字符串
然而,我想让它做的是,它也用新的数据替换所有现有的数据,而不创建换行符,或者用上一次写入控制台的“尾巴”来显示它。
它现在正在做的是在我没有告诉它的地方添加换行符(是因为getAllCoreData_Parsed()函数中使用了\n吗?我需要\n来格式化它,因为我需要它像这样显示)
这就是它目前正在做的事情:

Core 0    0.0%
Core 1    0.0%
Core 2    0.0%
Core 3    0.0%
Core 4    0.0%
Core 5    0.0%
Core 6    0.0%
Core 7    0.0%
Core 8    0.0%
Core 9    0.0%
Core 10   0.0%
Core 11   0.0%
Core 0    5.0%
Core 1    0.6%
Core 2    0.0%
Core 3    0.0%
Core 4    0.0%
Core 5    0.0%
Core 6    0.0%
Core 7    0.0%
Core 8    1.0%
Core 9    0.0%
Core 10   0.0%
Core 11   0.0%


这就是我想要它做的:

Core 0    1.0%
Core 1    0.0%
Core 2    0.0%
Core 3    0.6%
Core 4    0.0%
Core 5    0.0%
Core 6    0.0%
Core 7    9.3%
Core 8    0.0%
Core 9    0.0%
Core 10   0.0%
Core 11   0.0%

AND THEN (same position on console)

Core 0    12.0%
Core 1    0.0%
Core 2    0.0%
Core 3    0.9%
Core 4    0.0%
Core 5    0.0%
Core 6    1.8%
Core 7    0.0%
Core 8    0.0%
Core 9    0.0%
Core 10   8.1%
Core 11   0.0%


谢啦,谢啦

wwodge7n

wwodge7n1#

这应该是你要找的

import psutil
import time

def get_cpu_usage_by_core():
    return [
        f"Core {count:<2}\t{cpu:>5}%"
        for count, cpu in enumerate(psutil.cpu_percent(percpu=True))
    ]

while True:
    output = get_cpu_usage_by_core()

    for line in output:
        print(line)

    time.sleep(1)
    print("\033[F" * (len(output) + 1))

字符串

相关问题