改行やスペースを入れずに印刷するには?
疑問はタイトルにあります。
私は[tag:Python]でそれをしたいと思っています。この例で[tag:C]でやりたいこと。
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
に追加する方法です。
1749
3
一般的な方法
に電話する必要がある場合もあります。
を呼び出して、
stdout
がすぐにフラッシュされるようにする必要があるかもしれません。Python 2.6+の場合
Python 2.6 からは、Python 3 の
print
関数をインポートすることができます。これにより、以下の Python 3 のソリューションを使用することができます。
Python 3
Python 3では、
print
文が関数に変更されました。Python 3では、代わりに次のようにできます。これは Python 2 でも動作します。ただし、
from __future__ import print_function
を使用している必要があります。バッファリングに問題がある場合は、
flush=True
キーワード引数を追加することで、出力をフラッシュすることができます。しかし、
flush
キーワードは、Python 2 の__future__
からインポートされたバージョンのprint
関数では利用できないことに注意してください; Python 3 でのみ、具体的には 3.3 以降で動作します。それ以前のバージョンでは、sys.stdout.flush()
を呼び出して手動でフラッシュする必要があります。ソース
_注:この質問のタイトルは、以前は「How to printf in python?」のようなものでした。
タイトルを見て探しに来る人がいるかもしれないので、Pythonもprintf形式の置換をサポートしています。
また、文字列の値を簡単に乗算することができます。
新しい(Python 3.0以降)
print
関数には、オプションでend
パラメータがあり、終了文字を変更することができます。また、セパレータを表すsep
もあります。