使用CMD shell打印多行输出(Python)

时间:2017-08-24 16:23:25

标签: python shell output

我今天有一个简单的问题。基本上,我想用python在CMD shell中打印2行或更多行。这是一个例子:

常规CMD Shell:

Output

我想要的是什么:

Output
Output1
Ect.

我正在使用Python 3.x fyi。我甚至不知道这对于典型的Python库是否可行,感谢您的回答!

编辑:由于困惑,我决定写更详细的内容。我希望有2个或更多的实时输出,而循环或某事正在运行。因此,例如,如果我在while True循环中运行时钟,我可以使用回车功能并运行2个输出。

编辑#2:所以我要给你们一个我需要回答这个问题的情况。基本上,我做了一个循环,使用返回显示当前时间和直到晚上7:30的时间到CMD shell,所以它都整齐地保持在一条线上。但是,我需要它而不是我在1行打印我需要的所有信息,它在2上执行。这是输出:

Time:  12:44:38 Time Left Until 7:30:  6:45:22

我想要的是:

Time:  12:44:38 
Time Left Until 7:30:  6:45:22

这是我的代码:

import datetime
import time
import sys
while True:
    start_time = datetime.datetime.now().time().strftime('%H:%M:%S')
    end_time = ('19:30:00')
    total_time=(datetime.datetime.strptime(end_time,'%H:%M:%S') - datetime.datetime.strptime(start_time,'%H:%M:%S'))

    print ('Time: ', start_time, 'Time Left Until 7:30: ', total_time, end='\r')

    time.sleep(0.1)

当我尝试在回车下方打印任何内容时,它不会打印,当我将回车放入第二次打印时,原始循环打印下来而不是一行。再次感谢!

2 个答案:

答案 0 :(得分:1)

您可以通过调用protected String lastFive() { int listsize = 5; List<User> userlist = new ArrayList<User> ( ); userlist = db.convertDatabaseToList ( ); Collections.sort (userlist, User.Comparators._id); StringBuffer buffer = new StringBuffer(); String lastScoreMessage; for (int i = 0; i < listsize; i++) { User temp = userlist.get(i); String username = temp.getName(); int score = temp.getScore(); buffer.append(username + ": " + score + "\n"); } lastScoreMessage = buffer.toString(); return lastScoreMessage } 来刷新cmd窗口。这将清除屏幕并允许您打印更新的输出。

答案 1 :(得分:1)

如果cls命令闪烁,则可以使用ANSI命令进行控制。首先,您必须在Windows cmd中启用ANSI。您可以使用colorama等第三方库来执行此操作。

启用ANSI后,您可以使用它来向上移动一行并删除一行(并添加漂亮的颜色)。

 colorama.init() # don't forget to call

上一行:sys.stout.write('\033[1A')

删除当前行:sys.stout.write(' \r\033[K')

相关问题