直接在控制台

时间:2017-07-19 14:59:19

标签: python string python-2.7

我希望在控制台输出时更改字符串。

例如,我可以使用"test"这样的字符串,并输出控制台上的每个字符:

for c in "test":
    sys.stdout.write(c)
    time.sleep(1)

#<= t
#<= te
#<= tes
etc..

但是,如果我想在屏幕上显示输出并进行更改,该怎么办?例如,如果我想在字符串中的每个字母大写,而某些东西在后台运行(有点像进度条),该怎么办?所以它最终看起来像这样:

#<= Test
#<= tEst
#<= teSt
#<= tesT

一遍又一遍,直到我下载或运行完毕。如何在控制台上更改字符串本身?

看到这是如何重复的,我会改写它。

我想获取我拥有test的字符串并使用(可能)stdout.flush()或类似的东西,并在后台运行某些内容时将该字符串的每个字母大写,例如:

def download():
   # download something using requests(stream=True)
   while chunk_downloading:
       sys.stdout.write("test")
       # do something here to where it will run through the string and capitalize each letter
       sys.stdout.flush()

这个输出应该沿着这些线看(在一条奇异的线上):

test -> Test -> tEst -> teSt -> tesT -> test -> etc..

2 个答案:

答案 0 :(得分:0)

您可以在字符串的开头打印'r'以写入行的开头,如果您没有在结尾处放置'\n',则不会转到下一行一。然后你可以做sys.stdout.flush()。如果在刷新后放入sleep语句,它将更改屏幕上的字符串。试试吧!

答案 1 :(得分:0)

正如您所说,您只会显示一种加载进度,但在显示大写字母时您不会​​加载您的字母。

您唯一能做的就是在显示小写字母之前显示大写字母。只需在睡眠前显示c.capitalize()1秒