一尘不染

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

javascript

我想用 Python 来做。我想在 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或空格。我怎样才能避免这种情况?我想知道如何将字符串“附加”到stdout.


阅读 144

收藏
2022-02-09

共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从 Python 3 导入函数:__future__

from __future__ import print_function

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

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

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

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

您可能还需要致电

sys.stdout.flush()

以确保stdout立即冲洗。

2022-02-09