python小白,在看廖雪峰python subprocess
教程的时候碰到下面一个执行 nslookup
命令的报错
操作系统:win10 python版本:3.7
import subprocess
print('$ nslookup')
p = subprocess.Popen(['nslookup'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = p.communicate(b'set q=mx\npython.org\nexit\n')
print(output.decode('utf-8'))
print('Exit code:', p.returncode)
报错信息:
$ nslookup
Traceback (most recent call last):
File "E:/py/learning-python/Process_Thread/multi_process/sub_process.py", line 14, in <module>
print(output.decode('utf-8'))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 2: invalid continuation byte
Process finished with exit code 1
请问造成这个错误的原因是什么?如何解决谢谢。
老铁, 和
subprocess
没啥关系, 其实是一个bytes
类转换为str
的编码问题你试试:
这个字符串里面有中文
而此句
output, err = p.communicate(b'set q=mx\npython.org\nexit\n')
中,output
的编码是GBK
所以不能用
utf-8
来解码这个其实是
gbk
编码和utf-8
编码产生了冲突的问题虽说都支持中文, 但是给中文编码的顺序不同, 我举个例子吧:
可以参考这位大佬的文章:https://www.cnblogs.com/gavin...
祝你好运!