我创建了一个命令行工具,做一些长期的行动,我想通过打印语句通知用户,如:更换打印出来的文字
"10% Done"
"20% Done"
上有多大比例的操作完成。如果我使用println,每个进度将被打印到一个新行(显然),但是有一种快捷方式,我可以用新的文本替换上一次打印的文本,所以在控制台上,您只能读取实际百分比,而不是实际的和之前打印的那些?
我创建了一个命令行工具,做一些长期的行动,我想通过打印语句通知用户,如:更换打印出来的文字
"10% Done"
"20% Done"
上有多大比例的操作完成。如果我使用println,每个进度将被打印到一个新行(显然),但是有一种快捷方式,我可以用新的文本替换上一次打印的文本,所以在控制台上,您只能读取实际百分比,而不是实际的和之前打印的那些?
如果输出为的终端,那么你可以使用一个事实,即 \r
(回车)移动“光标”到当前 线的起点,如不推进到下一行:
print("10% done \r")
print("20% done \r")
print("100% done\n")
(但请注意,这并不在Xcode调试控制台的工作。)
谢谢,我试图回车,但我认为它不工作,因为调试器concole,但在终端工作完美。 – 2015-03-03 13:16:40
不,这是不可能的。 Swift无法访问已打印的字符串。但是你可以在显示进度的地方创建一个进度条。例如,如下所示:
|========= | 40%
但是,打印出来后,您无法更改日志的输出。
像这样的作品在终端控制台上:
import Foundation
for i in 1...10 {
print("\(i) \r", terminator: "")
fflush(stdout)
sleep(1)
}
答案是“否”。 – Sulthan 2015-03-03 12:55:22
也许如果你可以清除屏幕,所以它总是打印在第一行?但是这有它自己的缺点。 – Lexib0y 2015-03-03 13:10:38