Stdout循环在一定数量的字符后停止

时间:2016-01-28 02:01:37

标签: python python-2.7

我希望我的程序有一个循环显示,代码可以工作,但问题是字符显示是一个很长的连续行,而我希望它在一定数量的字符后回到打印的开始已被展示。

这是当前时刻的整个代码:

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"来自不同的功能,我把逗号放在那里,使它成为一行。如果有帮助的话,我会把它放在循环中。

对于混乱感到抱歉

1 个答案:

答案 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..