Unprint a line on the console in Python?

女生的网名这么多〃 提交于 2019-12-29 06:27:09

问题


Is it possible to manipulate lines of text that have already been printed to the console?

For example,

import time
for k in range(1,100):
     print(str(k)+"/"+"100")
     time.sleep(0.03)
     #>> Clear the most recent line printed to the console
print("ready or not here I come!")

I've seen some things for using custom DOS consoles under Windows, but I would really like something that works on the command_line like does print without any additional canvases.

Does this exist? If it doesn’t, why not?

P.S.: I was trying to use curses, and it was causing problems with my command line behaviour outside of Python. (After erroring out of a Python script with curses in it, my Bash shell stopped printing newline -unacceptable- ).


回答1:


What you're looking for is:

print("{}/100".format(k), "\r", end="")

\r is carriage return, which returns the cursor to the beginning of the line. In effect, whatever is printed will overwrite the previous printed text. end="" is to prevent \n after printing (to stay on the same line).

A simpler form as suggested by sonrad10 in the comments:

print("{}/100".format(k), end="\r")

Here, we're simply replacing the end character with \r instead of \n.

In Python 2, the same can be achieved with:

print "{}/100".format(k), "\r",



回答2:


The simplest method (at least for Python 2.7) is to use the syntax:

print 'message', '\r',
print 'this new message now covers the previous'

Notice the extra ',' at the end of the first print. This makes print stay on the same line. Meanwhile, the '\r' puts the print at the beginning of that line. So the second print statement overwrites the first.




回答3:


What you need are ANSI Command Codes. http://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
You also need code to activate ANSI Command Codes. I would use Colorama. https://pypi.python.org/pypi/colorama

OR

Use curses (Python 3.4+) module.



来源:https://stackoverflow.com/questions/30203228/unprint-a-line-on-the-console-in-python

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!