我试图在kubernetes上的python容器中获得一个简单的进度栏。但是,在完成工作之前,它不会输出任何内容,并且进度栏达到100%。相同的确切代码在本地码头容器中完美工作。那么,Kubernetes拥有什么使我无法在日志中实时更新的进度栏?
进度条形码:
import sys
import time
class Color:
BOLD = ' 33[1m'
ENDC = ' 33[0m'
ERASE_LINE = 'x1b[2Kr'
def percentage(current, total):
percent = 100 * float(current) / float(total)
return percent
class ProgressBar:
def __init__(self, total):
self._total = total
self._current = 0
self.print()
def update(self):
self._current += 1
self.print()
def print(self):
percent = percentage(self._current, self._total)
sys.stdout.write("r")
sys.stdout.write(Color.BOLD + "[%-50s] %d%%" % ('=' * int(percent / 2), percent) + Color.ENDC)
sys.stdout.flush()
if __name__=="__main__":
print("Ready to run soon...")
time.sleep(10)
print("Running!")
pbar = ProgressBar(255)
for i in range(255):
time.sleep(0.03)
pbar.update()
记录时,而不是向人类展示事物,而是需要登录以n
结尾的完整行。我通常会建议您打印10%...n20%...n etc
之类的东西,而不是进度栏。由您决定频率打印当前状态。
更新:
您可以更新脚本以检测终端是否为TTY,并相应地更改行为
使用此:
import os, sys
if os.isatty(sys.stdout.fileno()):