如何在没有换行符或空格的情况下打印?

问题在于标题。

我想用python来做。 我在这个例子中想要做的是在c:

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

输出:

..........

在Python中:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

在Python print会添加一个n或一个空格,我该如何避免这种情况? 现在,这只是一个例子。 不要告诉我,我可以先建立一个字符串然后打印出来。 我想知道如何“追加”字符串到stdout


一般方法

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

您可能还需要致电

sys.stdout.flush()

确保stdout立即刷新。

Python 2.6+

从Python 2.6中,您可以从Python 3导入print功能:

from __future__ import print_function

这使您可以使用下面的Python 3解决方案。

Python 3

在Python 3中, print语句已被更改为函数。 在Python 3中,您可以改为:

print('.', end='')

这也适用于Python 2,前提是您已经使用from __future__ import print_function

如果您在缓冲时遇到问题,可以通过添加flush=True关键字参数来刷新输出:

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

它应该像Guido Van Rossum在这个环节所描述的一样简单:

回复:如何在没有ac / r的情况下打印?

http://legacy.python.org/search/hypermail/python-1992/0115.html

是否可以打印某些内容,但不会自动附加回车符?

是的,在最后一个参数后面加一个逗号来打印。 例如,该循环在由空格分隔的行上打印数字0..9。 请注意添加最终换行符的无参数“打印”:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

注意:这个问题的标题曾经是“如何在python中打印?”

由于人们可能会根据标题来到这里寻找它,Python也支持printf样式替换:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

而且,您可以轻松地乘以字符串值:

>>> print "." * 10
..........
链接地址: http://www.djcxy.com/p/2167.html

上一篇: How to print without newline or space?

下一篇: link several Popen commands with pipes