退出子过程时向字符串添加字符

时间:2016-11-29 02:48:34

标签: python

我正在调用子进程并在出现错误时返回一个字符串。 代码示例:

调用流程时:

def read_plan_with_break():
    comand = " python script.py "
    proc = subprocess.Popen(comand.split(), shell=False, stdout = subprocess.PIPE, stderr= subprocess.PIPE)
    if proc.wait() != 0:
        output, err = proc.communicate() 
        print (err)
        return "Error in subprocess"
    return True 

退出子流程时:

def fatal_error():
  print("Some message", file=sys.stderr)
  exit(1)

我的问题是stderr输出为:b'Some message\r\n' 我可以使用\r\n删除strip,但不知道为什么开头有b而开头和结尾有'

有谁知道为什么会这样?

编辑: 我已尝试err.split()[2:-1]摆脱b',但它切断了Some message

的开头

如果我进行了投票,请解释一下,以便我可以在将来改进并提出更好的问题

1 个答案:

答案 0 :(得分:2)

err是一个字节字符串,你应该首先通过err.decode()解码它,这会返回字符串