我正在调用子进程并在出现错误时返回一个字符串。 代码示例:
调用流程时:
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
如果我进行了投票,请解释一下,以便我可以在将来改进并提出更好的问题
答案 0 :(得分:2)
err是一个字节字符串,你应该首先通过err.decode()解码它,这会返回字符串