[英]python Force git hook server side output on same line in realtime
git hooks服務器端輸出僅在換行符上傳輸。 我想配置一個自定義任務,並在同一行上打印實時輸出。 我該如何實現? 我嘗試了sys.stdout.flush,但是一旦完成,它就會傳輸所有內容。 如果我添加換行符,它確實可以實時工作。 我想要類似的東西
步驟A)已開始...已完成
每個“。” 在給定時間后附加。
我當前的代碼如下所示,並且僅在該方法完成時才輸出。
import sys, time, os
def print_realtime():
sys.stdout.write('Started.')
sys.stdout.flush()
time.sleep(1)
for i in range(1, 15):
sys.stdout.write('.')
sys.stdout.flush()
time.sleep(0.5)
if __name__ == "__main__":
print_realtime()
但是,如果我像這樣附加'\\ n',它可以實時工作:
sys.stdout.write('.\n')
問題歸結為這樣一個事實,即Git本身不會打印累積的remote:
文本,直到remote發送換行符或回車 。
因此,如果我們將您的內部循環更改為:
for i in range(1, 15):
sys.stdout.write('.' * i + '\r')
sys.stdout.flush()
time.sleep(0.5)
您會看到想要的效果。
需要注意的是\\r
移動打印位置回字剛過remote:
,所以我們必須重復我們迄今印刷(因此需要打印第一個.
,那么雙.
S,然后是三個,等等) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.