我试图在控制台中显示一行日志记录,而不是每次更新都显示一堆行。
我觉得举个例子就很容易理解了。我有一段时间真正的循环是这样的:
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,两者都是最新版本
要实现在控制台中显示用新值更新的单行的所需行为,您可以修改代码以覆盖控制台中的当前行,而不是打印新行。您可以使用回车符 ' '来达到这个效果。以下是您可以修改代码以获得所需结果的方法:
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() 函数在每次迭代中返回数据的更新值。
请尝试此修改,并告诉我是否可以解决您的问题。