考虑在Python中使用print的以下示例:

>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .

在每个值之间添加换行符或空格。我怎样才能避免这种情况,从而使输出。。。。相反换句话说,如何将字符串“附加”到标准输出流?


当前回答

Python 3:

print('.', end='')

Python 2.6+:

from __future__ import print_function # needs to be first statement in file
print('.', end='')

Python<=2.5:

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

如果每次打印后都有多余的空间,在Python 2中:

print '.',

Python 2中的误导-避免:

print('.'), # Avoid this if you want to remain sane
# This makes it look like print is a function, but it is not.
# This is the `,` creating a tuple and the parentheses enclose an expression.
# To see the problem, try:
print('.', 'x'), # This will print `('.', 'x') `

其他回答

如何在同一行打印:

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

在Python 3+中,print是一个函数。当你打电话时

print('Hello, World!')

Python将其翻译为

print('Hello, World!', end='\n')

你可以随心所欲。

print('Hello, World!', end='')
print('Hello, World!', end=' ')

你会注意到以上所有答案都是正确的。但我想做一个捷径,始终在结尾处写入“end=''”参数。

您可以定义如下函数

def Print(*args, sep='', end='', file=None, flush=False):
    print(*args, sep=sep, end=end, file=file, flush=flush)

它将接受所有数量的参数。甚至它也会接受所有其他参数,如file、flush等,并使用相同的名称。

我最近也有同样的问题。。。

我通过以下方式解决了这个问题:

import sys, os

# Reopen standard output with "newline=None".
# in this mode,
# Input:  accepts any newline character, outputs as '\n'
# Output: '\n' converts to os.linesep

sys.stdout = os.fdopen(sys.stdout.fileno(), "w", newline=None)

for i in range(1,10):
    print(i)

这在Unix和Windows上都有效,但我还没有在Mac OS X上测试过。

这里有三个代码供您选择:

print("".join(["." for i in range(4)]))

or

print("." + "." + "." + ".")

or

print(".", ".", ".", ".", sep="")