How to print without a newline or space

python, trailing-newline

Solution

In Python 3, you can use the `sep=` and `end=` parameters of the `print` function:

To not add a newline to the end of the string:

print('.', end='')

To not add a space between all the function arguments you want to print:

print('a', 'b', 'c', sep='')

You can pass any string to either parameter, and you can use both parameters at the same time.

If you are having trouble with buffering, you can flush the output by adding `flush=True` keyword argument:

print('.', end='', flush=True)

Python 2.6 and 2.7

From Python 2.6 you can either import the `print` function from Python 3 using the `__future__` module:

from __future__ import print_function

which allows you to use the Python 3 solution above.

However, note that the `flush` keyword is not available in the version of the `print` function imported from `__future__` in Python 2; it only works in Python 3, more specifically 3.3 and later. In earlier versions you'll still need to flush manually with a call to `sys.stdout.flush()`. You'll also have to rewrite all other print statements in the file where you do this import.

Or you can use `sys.stdout.write()`

import sys
sys.stdout.write('.')

You may also need to call

sys.stdout.flush()

to ensure `stdout` is flushed immediately.

Problem

Consider these examples using `print` in Python: ``` >>> for i in range(4): print('.') . . . . >>> print('.', '.', '.', '.') . . . . ``` Either a newline or a space is added between each value. How can I avoid that, so that the output is `....` instead? In other words, how can I "append" strings to the standard output stream?

Original source

Related problems