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')
答案 0 :(得分:1)
问题归结为Git本身在远程发送either a newline or carriage return之前不打印累积的const char ca[] = {'h','e','l','l','o','\0'};
const char* cp = ca;
while(*cp){
std::cout<<*cp<<" ";
++cp;
}
文本。
因此,如果我们将你的内部循环改为:
remote:
你会看到你想要的效果。
请注意,for i in range(1, 15):
sys.stdout.write('.' * i + '\r')
sys.stdout.flush()
time.sleep(0.5)
会将打印位置移回到单词\r
之后,因此我们必须重复到目前为止打印的内容(因此需要先打印一个remote:
,然后是两个.
s,然后是三个,依此类推。)