web-dev-qa-db-ja.com

python:キャリッジリターンとコンマを使用して印刷しない

ループ内の1行で印刷する必要があります(Python 3.x)。 SOを既に見て、コードに次の行を追加します。

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

ただし、ループしたときに複数の行が印刷されます。私も試しました

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

しかし、これはanythingをコンソールに出力しません...

誰がこれで何が起こっているのか知っていますか?

20
kevlar1818

最初のケースでは、一部のシステムは\rを改行として。 2番目のケースでは、行をflushしませんでした。これを試して:

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

Levonが私に思い出させるように、すべてのシステムで行をフラッシュする必要はありません。しかし、\r こちらです。

26
senderle

最後の行を上書きする場合は、次の行に進まないように、\ r(文字リターン)とend = ""を追加する必要があります。

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

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

values = range(0, 101)
for i in values:
  print ("Complete: ", i, "%", end="\r")
print ()
6
Southernal