我在macosx和python3上运行以下程序。我使用Sublime Text 3的Python3默认构建系统运行代码段,并在同一程序的输出窗口中显示输出。你知道吗
print('Starting test.')
for i in range(1,100):
print('This is a test. ' + str(i), end='\r')
print('Test done!')
我想要的输出基本上是重复同一行,每次都覆盖控制台中的前一行。最后,我应该只在输出窗口中看到以下内容。你知道吗
Starting test.
This is a test. 99
Test done!
我希望end='\r'
能让我做出这种行为,但事实并非如此。相反,我看到:
Starting test.
This is a test. 1
This is a test. 2
This is a test. 3
[...]
This is a test. 99
Test done!
对于后台,如果使用命令调色板中的
View Package File
查看Default/exec.py
,则可以检查用于执行程序的代码,并将其输出显示在面板中。你知道吗简而言之,程序在后台线程中执行,
stdout
和stderr
的输出使用以下代码读取:也就是说,每当它们读取任何数据时,它们都会在侦听结果的对象中调用
on_data()
,在本例中是exec
命令本身。该方法的实现如下所示:在内部Sublime使用
\n
作为行分隔符,因此在windows上\r\n
被解释为\n
,在MacOS上\r
也被解释为\n
。你知道吗因此,一方面,这并没有达到你所期望的效果,因为你的
\r
被有效地当作\n
一样对待。你知道吗除此之外,如果您通过保护代码跟踪对
append_string()
的调用,该代码使它保持线程安全并允许它与Sublime core交互,那么它将以如下方式结束:也就是说,无论您提供什么字符,它们都直接附加到输出缓冲区,而不考虑它们可能包含什么。你知道吗
如果您要提供一个定制的构建
target
(一个有点高级的插件,但仍然有可能),那么可以修改这个行为,尽管要让它在MacOS上工作可能很困难,因为在那个平台上无法区分\r
意味着什么。你知道吗代码在正常的命令行窗口中正确显示。问题在于Sublime的输出窗口,它似乎没有正确显示回车符(它用换行符代替回车符)。你知道吗
实际上,您需要在字符串的开头添加'\r'。你知道吗
输出
相关问题 更多 >
编程相关推荐