我有一个测试脚本迭代通过两个字符串数组,我想使用sys.stdout.write
为用户提供一个简单的“进度条”。Sys.stdout.write不按预期方式工作
我当前的脚本:
import sys
from time import sleep
names = ['Serv1', 'Serv2', 'Serv3', 'Serv4', 'Serv5']
states = ['Running', 'Stopped', 'Running', 'Running', 'Stopped']
terminated=0
passed=0
for i in range (0, len(names)):
if 'Running' in states[i]:
print " [*] stop if running {0} ".format(str(names[i]))
#service_info(action, machine, names[i])
terminated+=1
else:
print " [!] Passing over {0} ".format(str(names[i]))
passed+=1
sleep(2)
sys.stdout.write(" [ ] {0}/{1} progress left\r".format(i+1, len(names)))
预期的输出是sys.stdout.write
保持更新,而打印报表,通知一些动作的用户。但是当我运行这个时,显示的唯一时间sys.stdout.write
在脚本的末尾。例如。
[*] stop if running Serv1
[!] Passing over Serv2
[*] stop if running Serv3
[*] stop if running Serv4
[!] Passing over Serv5
[ ] 5/5 progress left
如何在更新的同时在所有打印照片下方显示进度?
这些都是每行,在默认情况下,你不能回去写上一行。一种方法是清除屏幕并一次又一次地写入所有行或一些窗口API。 http://stackoverflow.com/questions/7122775/python-multiple-line-terminal-update – YOU
我有另一个脚本扫描通过任何主机IP地址的端口,它成功地打印并提供一个进度输出在同一时间。我直接从它复制了一些部分,但在这个例子中似乎不起作用。 –