I have a program in Python that makes extensive use of the line feed character to produce the effect of an updating console line (specifically a progress bar).
When trying to debug the code in PyCharm I saw that the progress bar doesn't get printed until it's done.
Upon further inspection it turned out that when a carriage return (
) is printed, the whole line is deleted.
Because the library itself writes strings of the form ({line}
), I always get an empty line.
Is there any way to solve this using PyCharm? Currently what I'll be doing is replacing stdout
with a version that records the current line and reprints it after a carriage return is received. However I'd much rather have a simple way to do it.
Sample code:
import sys
sys.stdout.write('xxx')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('
ZZ')
sys.stdout.flush()
time.sleep(1)
sys.stdout.write('yyy
')
sys.stdout.flush()
time.sleep(1)
print ('===')
My run looks like this:
1. 'xxx' is printed
[After 1 second]
2. 'ZZ' is printed
[After 1 second]
3. The line is deleted
[After 1 second]
4. '===' is printed and the program terminates
This happens both in the debug and the run console when running this script.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…