我正在尝试使用Python中的“子进程”模块来获取shell的输出,命令是“netsh wlan show faces”。我尝试使用“utf-8”进行解码,“结果”变量是一个字符串,但无论如何它都不起作用。
提前感谢您的帮助!
import subprocess
class LocalNetwork:
def networkinformations():
result = subprocess.check_output('netsh wlan show interfaces',shell=True,encoding='utf-8').strip().splitlines()
print(result)
LocalNetwork.networkinformations()
回溯:
Traceback (most recent call last):
File "d:\Python\Bibliotheken\NetyPy.py", line 8, in <module>
LocalNetwork.networkinformations()
File "d:\Python\Bibliotheken\NetyPy.py", line 5, in networkinformations
result = sub.check_output('netsh wlan show interfaces', shell=True, encoding='utf-8').strip().splitlines()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2288.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 466, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2288.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 550, in run
stdout, stderr = process.communicate(input, timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.2288.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 1196, in communicate
stdout = self.stdout.read()
^^^^^^^^^^^^^^^^^^
File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x84 in position 285: invalid start byte
这适用于任何拥有以下条件的人: 结果= subprocess.run(命令,capture_output = True,text = True,check = True,encoding =“cp437”)