这是我的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
答案 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')