Python - Windows 上的子进程输出

问题描述 投票:0回答:1

我正在尝试使用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
python subprocess decoding windows-11
1个回答
0
投票

这适用于任何拥有以下条件的人: 结果= subprocess.run(命令,capture_output = True,text = True,check = True,encoding =“cp437”)

© www.soinside.com 2019 - 2024. All rights reserved.