Python Net SNMP返回HexString,然后返回String(Eclipse和Pydev)

Python Net SNMP返回HexString,然后返回String(Eclipse和Pydev),python,eclipse,pydev,net-snmp,Python,Eclipse,Pydev,Net Snmp,我正在使用netsnmp做一个snmpget。具体来说,我通过os.popen(“etc”)发送一个命令。返回的值是一个由空格分隔的十六进制字符串,类似这样:“A0 f0 D0”。返回值有时以“十六进制字符串:A0 f0 D0..”的形式出现,但有时以“字符串:\xA0\xf0\xD0”的形式出现,如您所见,其中空格用“\x”填充。有人知道为什么会发生这种情况吗?如果返回的值是带空格的十六进制字符串,而不是\x,我会更喜欢它 我应该注意到,我将Eclipse与Pydev一起使用。然后,我在pys

我正在使用netsnmp做一个snmpget。具体来说,我通过os.popen(“etc”)发送一个命令。返回的值是一个由空格分隔的十六进制字符串,类似这样:“A0 f0 D0”。返回值有时以“十六进制字符串:A0 f0 D0..”的形式出现,但有时以“字符串:\xA0\xf0\xD0”的形式出现,如您所见,其中空格用“\x”填充。有人知道为什么会发生这种情况吗?如果返回的值是带空格的十六进制字符串,而不是\x,我会更喜欢它

我应该注意到,我将Eclipse与Pydev一起使用。然后,我在pyscripter中运行了相同的代码,并获得了十六进制字符串值。我在Pyscripter中再次运行它,然后返回\x。这与未封闭的管道有关吗

我还应该提到,从另一个意义上讲,我得到的数据是不好的。带空格的十六进制字符串返回正确的数据值,但带\xs的字符串返回不正确的值


我使用了Wireshark,看起来get请求与从MIB发送的请求完全相同。MIB请求返回正确的数据,而Eclipse请求仍然返回错误的数据。

PyDev做了一件不同的事情,那就是使用java控制台的编码设置:sys.setdefaultencoding(encoding)(这样,如果您将unicode打印到控制台,它不会失败,说unicode没有解码为ascii)。要查看这是否是您的问题,您可以转到eclipse\plugins\org.python.pydev\PySrc\pydev\u sitecustomize\sitecustomize.py并对以下行进行注释:sys.setdefaultencoding(encoding)