2015-03-03 40 views
0

我创建了一个命令行工具,做一些长期的行动,我想通过打印语句通知用户,如:更换打印出来的文字

"10% Done" 
"20% Done" 

上有多大比例的操作完成。如果我使用println,每个进度将被打印到一个新行(显然),但是有一种快捷方式,我可以用新的文本替换上一次打印的文本,所以在控制台上,您只能读取实际百分比,而不是实际的和之前打印的那些?

+0

答案是“否”。 – Sulthan 2015-03-03 12:55:22

+0

也许如果你可以清除屏幕,所以它总是打印在第一行?但是这有它自己的缺点。 – Lexib0y 2015-03-03 13:10:38

回答

3

如果输出为的终端,那么你可以使用一个事实,即 \r(回车)移动“光标”到当前 线的起点,如不推进到下一行:

print("10% done \r") 
print("20% done \r") 
print("100% done\n") 

(但请注意,这并不在Xcode调试控制台的工作。)

+0

谢谢,我试图回车,但我认为它不工作,因为调试器concole,但在终端工作完美。 – 2015-03-03 13:16:40

0

不,这是不可能的。 Swift无法访问已打印的字符串。但是你可以在显示进度的地方创建一个进度条。例如,如下所示:

|=========    | 40% 

但是,打印出来后,您无法更改日志的输出。

2

像这样的作品在终端控制台上:

import Foundation 
for i in 1...10 { 
    print("\(i) \r", terminator: "") 
    fflush(stdout) 
    sleep(1) 
}