清除控制台以在终端Python中获取单行日志记录

问题描述 投票:0回答:1

我试图在控制台中显示一行日志记录,而不是每次更新都显示一堆行。

我觉得举个例子就很容易理解了。我有一段时间真正的循环是这样的:

logging.info("Starting")
while True:
    data = checknewdata()
    logging.info("Data " + data)

我希望logging.info(“Data”+ data)行在控制台上只出现一次,但它在每个周期都会更新新值,而不是:

Data 1
Data 2
Data 5
Data 8

我只会有一行

Data x
,其中
x
实际上随新值而变化

我尝试遵循this或添加

sys.stdout.flush()
,但它不起作用

有什么建议吗?

我正在使用 PyCharm 和 Grep Console,两者都是最新版本

python logging console
1个回答
0
投票

要实现在控制台中显示用新值更新的单行的所需行为,您可以修改代码以覆盖控制台中的当前行,而不是打印新行。您可以使用回车符 ' '来达到这个效果。以下是您可以修改代码以获得所需结果的方法:

import logging
import time

logging.info("Starting")
while True:
    data = check_new_data()  # Replace checknewdata() with the actual function name
    print("\rData " + str(data), end='', flush=True)  # Use carriage return to overwrite the line
    time.sleep(1)  # Adjust the delay as per your requirements

在此修改后的代码中,回车符 ' ' 用于将光标移回到行首,然后带有 end='' 参数的 print 函数会用新的 data 值覆盖之前的内容。 lush=True 参数确保输出立即显示在控制台中。

此修改应导致控制台中出现一行,该行在每个周期内不断更新新的数据值。

确保 check_new_data() 函数在每次迭代中返回数据的更新值。

请尝试此修改,并告诉我是否可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.