如何覆盖以前打印的文本



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

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()

from如何在python中覆盖以前的打印到stdout?

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

从删除和替换打印项目

但老实说,我不知道如何或是否可以将这些解决方案融入我自己的代码中,因为我的程序与解决方案中使用的程序有很大不同,或者我只是我的noob,可能是后者

谢谢。

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

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")

它应该会有所帮助,除非你不希望你的屏幕被清除。

这是一个特殊的解决方案,因为没有简单的方法可以包含换行符。

import sys
import time
import requests
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']
b ="Bitcoin price: " + json_value + " USD"
sys.stdout.write('r' + b)
time.sleep(1)

最新更新