簡體   English   中英

python強制git鈎子服務器端實時輸出在同一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM