我希望在控制台输出时更改字符串。
例如,我可以使用"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..
答案 0 :(得分:0)
您可以在字符串的开头打印'r'
以写入行的开头,如果您没有在结尾处放置'\n'
,则不会转到下一行一。然后你可以做sys.stdout.flush()
。如果在刷新后放入sleep语句,它将更改屏幕上的字符串。试试吧!
答案 1 :(得分:0)
正如您所说,您只会显示一种加载进度,但在显示大写字母时您不会加载您的字母。
您唯一能做的就是在显示小写字母之前显示大写字母。只需在睡眠前显示c.capitalize()1秒