疑問はタイトルにあります。
私は[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
に追加する方法です。
import sys
sys.stdout.write('.')
に電話する必要がある場合もあります。
sys.stdout.flush()
を呼び出して、stdout
がすぐにフラッシュされるようにする必要があるかもしれません。
Python 2.6 からは、Python 3 の print
関数をインポートすることができます。
from __future__ import print_function
これにより、以下の Python 3 のソリューションを使用することができます。
Python 3では、 print
文が関数に変更されました。Python 3では、代わりに次のようにできます。
print('.', end='')
これは Python 2 でも動作します。ただし、from __future__ import print_function
を使用している必要があります。
バッファリングに問題がある場合は、flush=True
キーワード引数を追加することで、出力をフラッシュすることができます。
print('.', end='', flush=True)
しかし、flush
キーワードは、Python 2 の __future__
からインポートされたバージョンの print
関数では利用できないことに注意してください; Python 3 でのみ、具体的には 3.3 以降で動作します。それ以前のバージョンでは、sys.stdout.flush()
を呼び出して手動でフラッシュする必要があります。
_注:この質問のタイトルは、以前は「How to printf in 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
..........
新しい(Python 3.0以降)print
関数には、オプションでend
パラメータがあり、終了文字を変更することができます。また、セパレータを表す sep
もあります。