我今天有一个简单的问题。基本上,我想用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)
当我尝试在回车下方打印任何内容时,它不会打印,当我将回车放入第二次打印时,原始循环打印下来而不是一行。再次感谢!
答案 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')