是否可以打印和更新多于一行?这适用于一行:
print ("Orders: " + str(OrderCount) + " Operations: " + str(OperationCount), end="\r")
Run Code Online (Sandbox Code Playgroud)
并得到这个:(当然数字更新,因为它在一个循环中)
Orders: 25 Operations: 300
Run Code Online (Sandbox Code Playgroud)
我试过这个:
print ("Orders: " + str(OrderCount) + "\rOperations: " + str(OperationCount), end="\r\r")
Run Code Online (Sandbox Code Playgroud)
并得到这个:(数字确实更新正确)
Operations: 300
Run Code Online (Sandbox Code Playgroud)
寻找两行更新如下:
Orders: 25
Operations: 300
Run Code Online (Sandbox Code Playgroud)
并不是:
Orders: 23
Operations: 298
Orders: 24
Operations: 299
Orders: 25
Operations: 300
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 11
\r是一个回车,光标移动到行首(第 0 列)。从那里开始,编写更多的文本将覆盖之前编写的内容,因此您最终只会看到最后一行(这足以覆盖您之前编写的所有内容)。
你想要\n一个换行符,它移动到下一行(并再次从第 0 列开始):
print("Orders: " + str(OrderCount) + "\nOperations: " + str(OperationCount), end="\n\n")
Run Code Online (Sandbox Code Playgroud)
考虑使用字符串模板而不是使用str()和+连接str.format():
print("Orders: {}\nOperations: {}\n".format(OrderCount, OperationCount))
Run Code Online (Sandbox Code Playgroud)
print(f"Orders: {OrderCount}\nOperations: {OperationCount}\n")
Run Code Online (Sandbox Code Playgroud)
如果你想使用\r回车更新两行,你可以使用ANSI控制代码;打印\x1B[2A( ESC [ 2 A ) 将光标向上移动 2 次,根据需要调整数字。这是否有效取决于您支持的平台。
在我的 Mac 上,以下演示工作并使用随机数更新两行;我使用 ESC [ 0 K 来确保行上的任何剩余字符都被删除:
print("Orders: " + str(OrderCount) + "\nOperations: " + str(OperationCount), end="\n\n")
Run Code Online (Sandbox Code Playgroud)
演示:
您还可以使用Curses切换到全终端控制或坚持将所有内容放在一行上。如果您打算走 Curses 路线,请考虑到 Windows 兼容性充其量只是粗略的。
| 归档时间: |
|
| 查看次数: |
4288 次 |
| 最近记录: |