python - 如何覆盖以前的打印文本?
问题描述
我环顾了一些已经提出的问题,但似乎没有一个适合我的情况。所以我有一个非常基本的程序,可以显示比特币的当前价值:
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()
和
import time
for x in range (0,5):
b = "Loading" + "." * x
print (b, end="\r")
time.sleep(1)
但老实说,我不知道如何或是否可以将这些解决方案合并到我自己的代码中,因为我的程序与解决方案中使用的程序大不相同,或者我只是我的菜鸟,可能是后者哈哈。
谢谢。
解决方案
这是一个同时更新时间和货币的解决方案。只需在每次获取更新数据之前清除终端窗口即可。
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")
它应该会有所帮助,除非您不想清除屏幕。
推荐阅读
- c++ - Deduce the correct specialized member method of a class to match the data type of variable it is assigned to
- python - Python 2 与 3 正则表达式的区别
- python - AttributeError:模块'bcrypt'没有python的属性'hashpw'
- vb.net - 在 SQL Server Reporting Services 中将 uri 图像旋转 90 度
- python-3.x - 如何使用 Openpyxl 访问 Onedrive 上的 Excel 文件
- swift - 带有表情符号的快速光标位置
- java - Spring MongoDB - 使用抽象/密封类字段
- javafx - JavaFX如何将节点居中到ImageView(使用setPreserveRation == true)?
- ios - 拖放过程中获取titleLabel
- angular - Angular 6 Universal Application 代码未显示在视图源中