我創建了一個命令行工具,做一些長期的行動,我想通過打印語句通知用戶,如:更換打印出來的文字
"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