'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.
Solution 1:[1]
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)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | llllllllll |
