替换打印出来的文本
Replace printed out text
我创建了一个执行一些长操作的命令行工具,我想通过打印语句通知用户,例如:
"10% Done"
"20% Done"
操作完成的百分比。如果我使用 println,每个进度都会被打印到一个新行中(很明显),但是 swift 中有没有一种方法可以用新的文本替换最后打印的文本,因此您可以在控制台上阅读只有实际百分比,而不是实际和之前打印的百分比?
不,这不可能。 Swift 无法访问已经打印出来的字符串。但是您可以创建一个进度条来显示进度。例如像这样:
|========= | 40%
但是你无法更改日志的输出,在你打印出来之后。
如果输出到 Terminal 那么你可以使用这样的事实
\r
(回车Return)将“光标”移动到当前行的开头
行,不前进到下一行:
print("10% done ", terminator: "\r")
print("20% done ", terminator: "\r")
print("100% done")
(但请注意,这在 Xcode 调试器控制台中不起作用。)
类似这样的东西在终端控制台上有效:
import Foundation
for i in 1...10 {
print("\(i) \r", terminator: "")
fflush(stdout)
sleep(1)
}
我创建了一个执行一些长操作的命令行工具,我想通过打印语句通知用户,例如:
"10% Done"
"20% Done"
操作完成的百分比。如果我使用 println,每个进度都会被打印到一个新行中(很明显),但是 swift 中有没有一种方法可以用新的文本替换最后打印的文本,因此您可以在控制台上阅读只有实际百分比,而不是实际和之前打印的百分比?
不,这不可能。 Swift 无法访问已经打印出来的字符串。但是您可以创建一个进度条来显示进度。例如像这样:
|========= | 40%
但是你无法更改日志的输出,在你打印出来之后。
如果输出到 Terminal 那么你可以使用这样的事实
\r
(回车Return)将“光标”移动到当前行的开头
行,不前进到下一行:
print("10% done ", terminator: "\r")
print("20% done ", terminator: "\r")
print("100% done")
(但请注意,这在 Xcode 调试器控制台中不起作用。)
类似这样的东西在终端控制台上有效:
import Foundation
for i in 1...10 {
print("\(i) \r", terminator: "")
fflush(stdout)
sleep(1)
}