首页 > 解决方案 > 如何覆盖以前的打印文本?

问题描述

我环顾了一些已经提出的问题,但似乎没有一个适合我的情况。所以我有一个非常基本的程序,可以显示比特币的当前价值:

import requests
import os
import sys
import time
while True:
    main_api = ('https://api.coindesk.com/v1/bpi/currentprice.json')
    json_data = requests.get(main_api).json()
    json_updated = json_data['time']['updated']
    json_value = json_data['bpi']['USD']['rate']
    time.sleep(1)
    print('\n' 'Last Updated: ' + json_updated)
    print('\n' "Bitcoin price: " + json_value + " USD")

它在大多数情况下都很好用。但是有一个小问题,每次代码执行时(每秒),它都会在终端中创建更多的文本,显示货币和上次更新的时间。但它不会删除之前的文本,这使它看起来很难看而且有点混乱,所以我的目标是让它看起来像,在终端中,只有一次文本实例会自我更新,看起来更干净。

我已经看到了一些解决方案,例如:

for x in range(10):
    print(x, end='\r')
print()

如何在python中覆盖以前的打印到标准输出?

import time
for x in range (0,5):  
    b = "Loading" + "." * x
    print (b, end="\r")
    time.sleep(1)

删除和替换印刷项目

但老实说,我不知道如何或是否可以将这些解决方案合并到我自己的代码中,因为我的程序与解决方案中使用的程序大不相同,或者我只是我的菜鸟,可能是后者哈哈。

谢谢。

标签: pythonpython-3.xloopswhile-loop

解决方案


这是一个同时更新时间和货币的解决方案。只需在每次获取更新数据之前清除终端窗口即可。

import requests
import os
import sys
import time
def clear():
    if sys.platform=="win32":
        os.system("cls") # cmd clear command for Windows systems
    elif sys.platform in ["linux", "darwin"]: 
        os.system("clear") # terminal clear command for Linux and Mac OS
    else:
        raise OSError("Uncompatible Operating-System.")
while True:
    main_api = ('https://api.coindesk.com/v1/bpi/currentprice.json')
    json_data = requests.get(main_api).json()
    json_updated = json_data['time']['updated']
    json_value = json_data['bpi']['USD']['rate']
    time.sleep(1)
    clear()
    print('\n' 'Last Updated: ' + json_updated)
    print('\n' "Bitcoin price: " + json_value + " USD")

如果它看起来冻结,您还可以为当前小时添加一条线。

import requests
import os
import sys
import time
from datetime import datetime
def clear():
    if sys.platform=="win32":
        os.system("cls") # cmd clear command for Windows systems
    elif sys.platform in ["linux", "darwin"]: 
        os.system("clear") # terminal clear command for Linux and Mac OS
    else:
        raise OSError("Uncompatible Operating-System.")
while True:
    main_api = ('https://api.coindesk.com/v1/bpi/currentprice.json')
    json_data = requests.get(main_api).json()
    json_updated = json_data['time']['updated']
    json_value = json_data['bpi']['USD']['rate']
    time.sleep(1)
    clear()
    print('\n' "Current date and time :", str(datetime.now())[:-7])
    print('\n' 'Last Updated: ' + json_updated)
    print('\n' "Bitcoin price: " + json_value + " USD")

它应该会有所帮助,除非您不想清除屏幕。


推荐阅读