carriage return 在 Terminator 中不工作,但在 Ubuntu 中的 Terminal 中工作正常
carriage return not working in Terminator but works fine in Terminal in Ubuntu
我在 python 2.7 的打印函数中使用 '\r'。它在终端中运行良好,但在终结器中运行良好。
例如:
我正在使用一个递减计数器,它从 n 递减到 0。在终端中,计数值在同一行更新,而在终止符中,计数值在新行打印。我出于各种原因使用终结器,例如它的选项卡分区等高级功能。下面是代码快照
import sys
import time
if __name__ == "__main__":
sleep_time_in_sec = 15
time_to_go_back_mns = 10
for remaining in range(sleep_time_in_sec, -1, -1):
sys.stdout.write("\r")
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....".format(remaining,
time_to_go_back_mns))
sys.stdout.flush()
time.sleep(1)
有人可以提出修复建议吗
只需将 \r 放在 write 语句的末尾,如下所示:
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....\r".format(remaining,
time_to_go_back_mns))
新数据将覆盖该行,您可以使用 flush() 清除该行,然后再写入:
sys.stdout.flush()
确保您的个人资料设置在终结者方面是干净的。请务必查看兼容性选项卡,因为它提到了奇怪的应用程序行为。
注意 如果终端尺寸太小,回车 return 将停止运行。它只会 return 到最后一行的第一个字符
原回答
\r
实际上意味着 "carriage return" 而 \n
是一个换行符。
在 Linux (Unix) 中,您通常使用 \n
或 \r\n
.
因此,如果您的目标是换行,则应改用 \n
。
它可能在 "terminal"(可能是哪个)中工作的原因是因为某些终端(特别是 gnome 的终端)捕获 \r
并将其视为 \r\n
.
这个 post 的答案交给@Rick van Lieshout。
就我而言,我在同一 window 中使用了多个选项卡,因此 \r 无法正常工作。当我在单独的 window 或具有完整水平宽度的选项卡中使用它时,它工作正常。
我在 python 2.7 的打印函数中使用 '\r'。它在终端中运行良好,但在终结器中运行良好。
例如:
我正在使用一个递减计数器,它从 n 递减到 0。在终端中,计数值在同一行更新,而在终止符中,计数值在新行打印。我出于各种原因使用终结器,例如它的选项卡分区等高级功能。下面是代码快照
import sys
import time
if __name__ == "__main__":
sleep_time_in_sec = 15
time_to_go_back_mns = 10
for remaining in range(sleep_time_in_sec, -1, -1):
sys.stdout.write("\r")
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....".format(remaining,
time_to_go_back_mns))
sys.stdout.flush()
time.sleep(1)
有人可以提出修复建议吗
只需将 \r 放在 write 语句的末尾,如下所示:
sys.stdout.write(
"{:2d} seconds remaining to read last {:2d} minutes of data and perform prediction .....\r".format(remaining,
time_to_go_back_mns))
新数据将覆盖该行,您可以使用 flush() 清除该行,然后再写入:
sys.stdout.flush()
确保您的个人资料设置在终结者方面是干净的。请务必查看兼容性选项卡,因为它提到了奇怪的应用程序行为。
注意 如果终端尺寸太小,回车 return 将停止运行。它只会 return 到最后一行的第一个字符
原回答
\r
实际上意味着 "carriage return" 而 \n
是一个换行符。
在 Linux (Unix) 中,您通常使用 \n
或 \r\n
.
因此,如果您的目标是换行,则应改用 \n
。
它可能在 "terminal"(可能是哪个)中工作的原因是因为某些终端(特别是 gnome 的终端)捕获 \r
并将其视为 \r\n
.
这个 post 的答案交给@Rick van Lieshout。
就我而言,我在同一 window 中使用了多个选项卡,因此 \r 无法正常工作。当我在单独的 window 或具有完整水平宽度的选项卡中使用它时,它工作正常。