Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why doesn't python3's print statement flush output when end keyword is specified?

from sys import argv, stdout as cout
from time import sleep as sl
print("Rewinding.......",end = '') # If end is given output isn't flushed. But why?
cout.flush()
for i in range(0,20):
    sl(0.2)
    print(".",end='',flush = True) #No output is printed if flush wasn't specified as true.

print("Done") #Output is by default flushed here

When I specified end and sleep, I noticed that output wasn't flushed until next print where it was by default flushed.

Why does this happen? I had to manually flush the output.

like image 989
Tarun Maganti Avatar asked Mar 03 '18 07:03

Tarun Maganti


People also ask

What end =' does in Python?

The end parameter in the print function is used to add any string. At the end of the output of the print statement in python. By default, the print function ends with a newline. Passing the whitespace to the end parameter (end=' ') indicates that the end character has to be identified by whitespace and not a newline.

What does flush mean in printing?

A Flush Cut refers to lamination that is trimmed even with the edge of the printed piece. A Flush Cut offers aesthetic benefits, but the edge of the printing is not completely enclosed in film. Therefore, it does not completely protect the edge of the paper from moisture, oil or grime like the Sealed Edge method.

What is flush true in print Python?

flush=True will force our terminal to print it.


1 Answers

In fact this is the default behavior of the underlying stdio functions.

When the output is to console, the stream will be automatically flushed when a newline is encountered, but not other characters.

If the output is not a console, then even newline won't trigger a flush.

If you want to make sure about flush, you can tell the print() explicitly:

print("Rewinding.......",end = '',flush=True)
like image 146
llllllllll Avatar answered Oct 07 '22 02:10

llllllllll