2015-03-03 137 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) 
}