【发布时间】:2021-11-24 20:07:23
【问题描述】:
我有这个代码:
try:
execute = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print('execute', execute)
result = execute.stdout.read() + execute.stderr.read()
print('normal result', result)
result = result.decode('utf-8')
print('decoded result: ', result)
reliable_send(result)
except:
reliable_send('Something went wrong ;- (')
诸如 whoami 或 arp-a 之类的一些命令工作正常,我将结果接收到我的服务器,但是当我尝试获取 dir 或 ipconfig 时,此行 result = result.decode('utf-8') 抛出异常,有什么问题?我做错了吗?
错误:
result = result.decode('utf-8') UnicodeDecodeError:“utf-8”编解码器无法解码位置 321 中的字节 0xff:无效起始字节
【问题讨论】:
-
有哪些例外?是编码错误还是命令返回错误?
-
代码运行到 ( result = result.decode('utf-8') ) 行,甚至不打印 ( print('decoded result: ', result) ) 但抛出 except 并运行 (可靠发送('出了点问题;-(')),所以我猜解码有问题,但我不知道是什么
-
是的,我知道,但是出了什么问题?不幸的是,一张悲伤的脸并不是一个很好的错误消息,您能否更改代码以便打印异常并将其发布在问题中?
-
result = result.decode('utf-8') UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 322: invalid start byte 我猜就是这样
-
为什么你认为进程的输出是一个utf-8编码的字节序列?因为这是唯一一次使用
.decode('utf-8')才有意义。
标签: python python-3.x sockets tcp