Python编码问题,无法识别网络适配器

时间:2017-07-02 15:37:58

标签: python networking netsh

这是我的python代码划痕。

 import os
 print 'netsh interface ip set address name="' + adapter + '" static '+ staticaddr +' 255.255.255.0 192.168.1.1'

在此之前一切都很好,适配器包含在我的驱动程序中。

现在我运行这个(作为管理员)

 os.system('netsh interface ipv4 set address name="' + adapter + '" static '+ staticaddr +' 255.255.255.0 192.168.1.1')

它会触发此错误:

La syntaxe du nom de fichier, de répertoire ou de volume est incorrecte.

这意味着命令的语法不正确。

我尝试了os.system('netsh interface ipv4 set address name="' + adapter.encode('ascii','ignore') + '" static '+ staticaddr +' 255.255.255.0 192.168.1.1')

现在发生了这种异常:

'ascii' codec can't decode byte 0x82 in position 11: ordinal not in range(128)

问题究竟在哪里?

我的网络适配器的名称是:Connexion réseau sans fil

1 个答案:

答案 0 :(得分:1)

adapter.encode('ascii','ignore')引发UnicodeDecodeError,因为adapter是非ascii str。为了对其进行编码(即从unicode转换为str),Python首先尝试对其进行解码(即从str转换为unicode)并失败(adapter为非ascii)。

完全切换到unicode:

print (u'netsh interface ip set address name="' + adapter.decode('latin1') + u'" static '+ staticaddr.decode('ascii') + u' 255.255.255.0 192.168.1.1').encode('latin1')