一、异常字符
- 有些开源框架卡bug时会输出NUL字符,NUL字符的Unicode码点是\u0000,可能显示为^@
- 解决方法:
strings.TrimLeft(line.Text, "\u0000")
- python打印进度会用回退符\r,应考虑切分成多行处理。
二、golang解析python打印的进度条
func parse() {
if len(text) > 6 && strings.Contains(text[:6], "%|") {
numStr := strings.TrimSpace(text[:strings.Index(text[:6], "%|")])
num, err := strconv.Atoi(numStr)
if err != nil {
return
}
costStr := text[6:]
if idx := strings.Index(costStr, "["); idx != -1 {
costStr = costStr[idx+1:]
if idx = strings.Index(costStr, "<"); idx > 4 {
remainStr := costStr[idx+1:]
costStr = costStr[:idx]
var cost time.Duration
cost, err = utils.ParseDuration(costStr)
if err != nil {
return
}
if idx = strings.Index(remainStr, ","); idx > 4 {
remainStr = remainStr[:idx]
var remain time.Duration
remain, err = utils.ParseDuration(remainStr)
if err != nil {
return
}
}
return
}
}
return
}
}