【发布时间】:2021-03-05 00:08:10
【问题描述】:
我有一段代码可以做到这一点:
def command(self, s, level=1):
sub=subprocess.Popen(s, bufsize=0, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True);
(out, err) = sub.communicate()
我看到这个错误: UnicodeDecodeError:“utf-8”编解码器无法解码位置 2 中的字节 0xbe:无效的起始字节
当我尝试调用通信方法时。子进程 popen 正在读取为字符串。
在工作条件下它应该返回一个元组(stdoutdata,stderrdata)
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)应包括所需的行为、特定问题或错误和所需的最短代码作为格式化文本在问题本身中重现。没有明确的问题陈述的问题对其他读者没有用处。请参阅:minimal reproducible example。
-
向我们展示你是如何运行它的?默认情况下 subprocess.communicate() 返回字节,即它不会尝试解码它们。
-
正如here 所提到的,当在 Python
subprocess中运行的程序将压缩数据块吐出到标准输出以及其他普通文本日志行时,我遇到了这种情况
标签: python python-3.x utf-8