一尘不染

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

python

我想用python来做 。我想在c中的此示例中做什么:

在C中:

#include <stdio.h>

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

输出:

..........

在Python中:

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

.
在Python中print会添加\n或空格,如何避免呢?现在,这只是一个例子,不要告诉我可以先构建一个字符串然后再打印它。我想知道如何将字符串”append”到stdout


阅读 533

收藏
2020-02-04

共1个答案

一尘不染

在Python 3中,你可以使用函数的sep=end=参数print

不在字符串末尾添加换行符:

print('.', end='')

在要打印的所有函数参数之间不添加空格:

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

你可以将任何字符串传递给任何一个参数,并且可以同时使用两个参数。

如果你在缓冲方面遇到麻烦,可以通过添加flush=True关键字参数来刷新输出:

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

Python 2.6和2.7

在Python 2.6中,你可以print使用__future__模块从Python 3 导入函数:

from __future__ import print_function

允许你使用上面的Python 3解决方案。

但是,请注意,在从Python 2中导入flushprint函数的版本中,该关键字不可用__future__。它仅适用于Python 3,更具体地说是3.3及更高版本。在早期版本中,你仍然需要通过调用进行手动刷新sys.stdout.flush()。你还必须在执行此导入操作的文件中重写所有其他打印语句。

或者你可以使用 sys.stdout.write()

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

你可能还需要致电

sys.stdout.flush()

确保stdout立即冲洗。

2020-02-04