newline - python没有换行符或者空白如何打印?

  显示原文与译文双语对照的内容

问题在标题中。

我想在 python 中做我在这个例子中做的事情:


#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'或者一个空格,如何避免? 这只是一个例子。 不要告诉我可以先制作一个字符串然后打印它。 我想知道如何"附加"的字符串到标准输出( 我不知道它是否正确措辞) 。

时间:


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

或者


print('.'), # this will still print a space, but not a newline

请注意,在 python 3之后,已经将 print 语句变成了一个函数,所以第二个示例将无法运行。 在 python 3中,你可以执行以下操作:

 
print('.', end="")

 

或者如果你对缓冲区有问题,你可以这样做。

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

注:的标题这个问题以前应该会是某种像"如何在 python 中使用 printf"?

由于人们可能会基于标题来寻找它,python 也支持printf-style替换:


>>> 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
..........

使用python3-style打印功能 python2.6+ ( 也将破坏同一文件中所有现有的基于文本的打印语句。)


# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
 print('.', end='')

要不破坏所有python2打印关键字,请创建一个单独的printf.py 文件


# printf.py

from __future__ import print_function

def printf(str, *args):
 print(str % args, end='')

然后,在你的文件中使用它


from printf import printf
for x in xrange(10):
 printf('.')
print 'done'
#..........done

更多显示printf样式的示例


printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

这不是标题中问题的答案,但它是如何在同一行上打印的答案:


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

我最近有同样的问题。

我通过以下方法解决了:


C:tests>type pt.py
import sys, os

# reopen stdout 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)

C:tests>

这在unix和 Windows 上都有效。。 还没有在系统上测试过。。

HTH

你可以在python3中执行相同的操作,如下所示:


#!usr/bin/python

i = 0
while i<10 :
 print('.',end='')
 i = i+1

使用 python filename.py 或者 python3 filename.py 执行它

...