同じ場所に「OK」を印刷する必要があります。それを行う方法はありますか?
解決策を見つけましたが、IDLE で正しく動作しません。
while (count < 9):
if statusm == "<Status>OK</Status>":
print "ok",
同じ行にすべての「OK」が必要です。ありがとう!
このようなもの?
コード:
for i in range(5):
print '\b\b\bok',
または、'ok' が行頭にある場合は、代わりに単一の '\r' を使用できます。
for i in range(5):
print '\rok',
出力:
ok
一度に 1 つずつ印刷する必要がある場合は、他の回答のいずれかを使用してください。これにより、一度にすべてが印刷されます。
my_var = ''
while (count < 9):
if statusm == "<Status>OK</Status>":
my_var += 'ok'
print my_var
それか ?:
from sys import stdout
count = 1
statusm = "<Status>OK</Status>"
while (count < 9):
if statusm == "<Status>OK</Status>":
stdout.write('OK')
count += 1
編集
IDLE で 1 つの OK だけを行うことはできないと思います。しかし、次のコードは、コンソールで何ができるかを示しています。
from sys import stdout
from time import sleep
several = ("<Status>OK</Status>",
"<Status>bad</Status>",
"<Status>OK</Status>",
"<Status>bad</Status>",
"<Status>yes</Status>",
"<Status>OK</Status>",
"<Status>none</Status>",
"<Status>bad</Status>",
"<Status>OK</Status>",
"<Status>yes</Status>")
good = ('OK','yes')
for i,status in enumerate(several):
y = str(i)
stdout.write(y)
stdout.write(' OK' if any(x in status for x in good) else ' --')
sleep(1.0)
stdout.write('\b \b\b \b\b \b')
for c in y: stdout.write('\b \b')
結果
OKOKOKOKOKOKOKOK