Python实现终端内货币汇率实时更新(仅刷新数值)
实现终端实时刷新汇率数值的方案
要让程序持续运行并仅刷新数值、不重复打印整行,核心是利用终端光标控制转义序列回到已打印行的开头,覆盖原有内容,再配合循环和请求延迟实现。以下是修改后的代码:
import requests import time import colored from colored import fg # 初始化颜色变量 red = fg('red') blue = fg('blue') yellow = fg('yellow') green = fg('green') white = fg('white') # 先打印固定的标题和货币名称框架 print("Valor atualizado:\n") print(green + "Dólar: reais") print(red + "Euro: reais") print(yellow + "Bitcoin: reais") print(blue + "Etherium: reais") print(white) while True: try: # 请求汇率API数据 cotacoes = requests.get("https://economia.awesomeapi.com.br/last/USD-BRL,EUR-BRL,BTC-BRL,ETH-BRL") cotacoes.raise_for_status() # 捕获请求错误 cotacoes = cotacoes.json() # 提取各货币汇率 dolar = cotacoes['USDBRL']["bid"] euro = cotacoes['EURBRL']["bid"] bitcoin = cotacoes['BTCBRL']["bid"] eth = cotacoes['ETHBRL']["bid"] # 光标上移4行,回到汇率数据行的起始位置 print(f"\033[4A", end='') # 打印带对齐格式的新数值,覆盖旧内容 print(green + f"Dólar: {dolar:>10} reais") print(red + f"Euro: {euro:>11} reais") print(yellow + f"Bitcoin: {bitcoin:>7} reais") print(blue + f"Etherium: {eth:>7} reais") print(white) except Exception as e: # 出错时回到对应位置打印错误信息 print(f"\033[4A" + white + f"请求出错: {str(e)}") time.sleep(5) # 每5秒刷新一次,避免频繁请求API
关键细节说明:
\033[4A是ANSI终端转义序列,作用是让光标向上移动4行,精准回到之前打印汇率的位置,确保新输出能覆盖旧内容。{dolar:>10}这类格式化语法让数值右对齐,保持排版整齐,避免刷新时内容错位。- 异常捕获机制:处理API请求失败的情况,避免程序直接崩溃。
time.sleep(5)控制刷新间隔,可根据需求调整时长,不要过于频繁请求API。
内容的提问来源于stack exchange,提问作者scarletspeedster
相关产品推荐
相关产品推荐

