我希望我的程序有一个循环显示,代码可以工作,但问题是字符显示是一个很长的连续行,而我希望它在一定数量的字符后回到打印的开始已被展示。
这是当前时刻的整个代码:
import time
import sys
def Startup(s):
for c in s:
sys.stdout.write( '%s' % c )
sys.stdout.flush()
time.sleep(0.25)
def StartUpDot(s):
while True:
timeout = time.time() + 3*5
Time = 0
for c in s:
sys.stdout.write( '%s' % c)
sys.stdout.flush()
time.sleep(0.25)
if Time == 5 or time.time() > timeout:
break
Time = Time - 1
Startup("BOOTING UP"),
StartUpDot(".......") #This is what i want to repeat
我想要做的功能是StartUpDot功能。它改为显示一条连续的线,例如" BOOTING UP .................等"
澄清我希望......从头开始重复......" BOOTING UP"来自不同的功能,我把逗号放在那里,使它成为一行。如果有帮助的话,我会把它放在循环中。
对于混乱感到抱歉
答案 0 :(得分:3)
您有两种选择:
如果您希望在当前文本下方的行上打印文本,则需要将public static void main(String[] args) throws IOException, InterruptedException{
CsvReader data = new CsvReader("data.csv");
data.readHeaders();
int index = 1;
int index_max = 50;
int retry = 0;
int retry_max = 2;
while (index < index_max)
{
if (retry == 0)
{ data.readRecord();
String Column1 = data.get("COLUMN1");
String Column2 = data.get("COLUMN3");
String Column3 = data.get("COLUMN4");
...
}
else
{
//Retry with the same data
}
try {
//Invoke webservice to send the data and write on DB after validation
if (positive.answer == 0)
{
System.out.println("Great!!!");
index++;
retry = 0;
}
else
{
System.out.println("Bummer");
index++;
retry = 0;
}
}
catch (Exception e) {
if (e instanceof webservice_Exception){
//The Exception is about the webservice, print it
index++;
retry = 0;
} else {
//The Exception is about another thing, could be a transmission issue, please retry
retry++;
if (retry == retry_max)
{
retry = 0;
index++;
}
}
}
}
data.close();
}
字符打印到stdout
newline
如果您使用的最大行宽为10个字符,则输出结果如下:
sys.stdout.write('\n')
如果要清除当前文本并在同一行上打印,则需要将1 BOOTING UP
2 ........
打印到stdout,这会将光标返回到行的前面。然后打印行的整个宽度的空白字符(清除旧文本),然后返回另一个回车键将光标返回到行的开头。
carriage return
使用此方法,输出看起来像这样(每次的行号都相同,所以这更像是一个时间序列)。
line_width = 10
sys.stdout.write('\r{0}\r'.format(' ' * line_width))
这是一个例子
1 BOOTING UP
1 OOTING UP.
1 OTING UP..