【问题标题】:How to replace string from previous line using \r (Python) [duplicate]如何使用 \r (Python)替换上一行中的字符串[重复]
【发布时间】:2014-11-03 08:46:01
【问题描述】:

我正在尝试从 60 秒开始倒计时。我唯一的问题是,当我运行该函数时,程序会像这样打印代码:

60

59

58

...等

如何在不打印 60 行的情况下替换第一行中的 60 并将 59 放在原位?

这是我的代码:

from __future__ import division
import sys, time 

def countdown():
    seconds = 60
    while seconds >= 0:
        print seconds
        sys.stdout.flush()
        time.sleep(1)
        seconds -= 1

【问题讨论】:

  • 小心那些标签! r 是对语言的引用,而不是 /r
  • @Conduit 我很抱歉。添加标签时没有注意标签。
  • @Quadufu 不用担心 - 学习如何使用 SO 需要一些时间。坚持下去!这是网络上最好的编程资源之一,IMO。

标签: python string replace countdown


【解决方案1】:

countdown 函数的开头打印一个空行。这将创建\r 工作所需的行。现在,将print seconds 部分替换为

sys.stdout.write('\r  \r')
sys.stdout.write(str(seconds))

第一行清除函数开头打印的前一个空行。第二个输出秒数。

代码:

def countdown():
    seconds = 60
    print ''
    while seconds >= 0:
        sys.stdout.write('\r  \r')
        sys.stdout.write(str(seconds))
        sys.stdout.flush()
        time.sleep(1)
        seconds -= 1

【讨论】:

  • 这行得通。但是,我不完全明白为什么。 sys.stdout.write() 函数有什么作用?
  • sys.stdout.writeprint 做同样的事情,但它不会在末尾隐式添加'\n'。这就是打乱你之前尝试的原因。
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多