You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:03:19