2012-06-13 10 views
12

ループ(Python 3.x)で1行以上印刷する必要があります。私は既にこのコードを見て、私はこのコードを私のコードに入れます:python:キャリッジリターンとカンマが動作しないで印刷する

print('{0} imported\r'.format(tot),) 

しかし、それでもループスルー時に複数の行を出力します。私はまた、

sys.stdout.write('{0} imported\r'.format(tot)) 

を試してみましたが、これは

誰もがこれで何が起こっているか知っている...コンソールにを印刷しないのですか?

+0

'sys.stdout.write()'は '輸入sys'を持っている...私のために動作します。出力を同じ行にオーバーレイしようとしていますか? – Levon

+0

python 2.xから 'print text 'と同じ効果を得ようとするなら、' print'(text、end =' ') 'のように' end'引数を使う必要があります。関数の引数の最後にあるカンマは効果がありません。 – James

+0

「from 2.x」についてはわかりません。 'print(text、end = '')行は' = 'に構文エラーを出します。 – rossmcm

答えて

17

最初のケースでは、一部のシステムでは改行として\rが扱われます。 2番目のケースでは、あなたはflush行をしませんでした。これを試してみてください:レヴォンが私を思い出させるように、ラインをフラッシュ

sys.stdout.write('{0} imported\r'.format(tot)) 
sys.stdout.flush() 

は、どちらかのすべてのシステムでは必要ありません - しかし、\rこの方法を使用する際には、一般的に良いアイデアです。

+0

@ kevlar1818私がコメントで述べたように、それは私のために働いていました(出力バッファをフラッシュしなくても)...奇数 – Levon

+0

'sys.stdout.flush()'が必要でした。ありがとう! – kevlar1818

9

最後の行を上書きする場合は、次の行に移動しないように\ r(文字の戻り値)とend = ""を追加する必要があります。

values = range(0, 100) 
for i in values: 
    print ("\rComplete: ", i, "%", end="") 
print ("\rComplete: 100%") 
3

私は月のソリューションを使用することを好むが、このように:

values = range(0, 101) 
for i in values: 
    print ("Complete: ", i, "%", end="\r") 
print ("\n\r", end="") 
+3

あなたの最後の行は過剰です。 'print()'だけでなければなりません。 –

関連する問題