【问题标题】:python: multiple print lines to be overwrittenpython:要覆盖多个打印行
【发布时间】:2021-07-29 22:22:46
【问题描述】:

抱歉这个菜鸟问题,我在网站上查看了其他类似的问题,但找不到解决我问题的问题。

我对 python 很陌生,所以请原谅我。 我正在尝试制作一个显示我的交易账户结果的机器人。

第一步我希望能够在终端中看到结果。 第二步是“将这些结果写在网页上”

我想要实现的是,每一行打印都会在相同的原始行上使用新值进行更新。

函数的部分代码是这样的:

def eth_results():
    eth = s.get_wallet_balance()['result']['ETH']
    eth_starting_balance = 0.05015276
    eth_balance = eth['wallet_balance']
    eth_equity = eth['equity']
    eth_daily_pnl = format(eth['realised_pnl'],'.8f')
    eth_percentage_pnl = eth_starting_balance * (eth_starting_balance / (eth_balance - eth_starting_balance))
    print('\n--------------------------------------\n')
    print(f'Coin: ETHEREUM')
    print(f'Balance: {eth_balance}')
    print(f'Starting Balance: {eth_starting_balance}')
    print(f'Total Profit: {eth_percentage_pnl}')
    print(f'Total Equity: {eth_equity}')
    print('\n--------------------------------------\n')

然后我告诉它每 5 秒重复一次

while True:
  eth_results()
  time.sleep(5)

现在的输出是这样的但我想在同一行打印结果,只更新变量

--------------------------------------

Coin: ETHEREUM
Balance: 0.0513822
Starting Balance: 0.05015276
Total Profit: 2.0458902716827083
Total Equity: 0.05133733

--------------------------------------


--------------------------------------

Coin: ETHEREUM
Balance: 0.0513822
Starting Balance: 0.05015276
Total Profit: 2.0458902716827083
Total Equity: 0.05133754

--------------------------------------


--------------------------------------

Coin: ETHEREUM
Balance: 0.0513822
Starting Balance: 0.05015276
Total Profit: 2.0458902716827083
Total Equity: 0.05133706

--------------------------------------

但我做不到。 如果我使用 \r 只有最后一行将被替换。基本上我想替换所有的行。 我很确定有多种方法可以实现这一目标,并且有多种方法可以“清理代码”,但现在我只想找到任何“可行的解决方案”,而不是找到“唯一最好的方法”来做到这一点。当然,当我获得更多经验时,我愿意以更好的方式编写代码。

奖励:之后我还想在文本/html/任何类型的文件上打印(和覆盖)相同的内容。但这不是现在的优先事项。

非常感谢

【问题讨论】:

    标签: python string printing overwrite


    【解决方案1】:

    您可以打印一堆新行来清除控制台。

    clear = "\n" * 100
    print(clear)
    

    您不能覆盖控制台中已经打印的行,因为它是一个输出。

    【讨论】:

    • 但如果我使用 \r 我可以覆盖最后一行。我不敢相信没有办法覆盖超过 1 行。但我可能完全错了!
    • \r 是一个回车符,您实际上将光标移回了行首,这就是您能够覆盖最后一行的原因。你可以把它想象成一台打字机,你可以向下移动到下一行(\n),然后你需要将光标移回开头(\r),但你不能转到另一行。
    【解决方案2】:

    你可以使用下面的

    import os
    print('text')
    os.system("clear")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多