Python 3.x 为什么subprocess.check_输出引发名为ProcessError的错误

Python 3.x 为什么subprocess.check_输出引发名为ProcessError的错误,python-3.x,subprocess,Python 3.x,Subprocess,我尝试了很多不同的方法,但我无法解决这个问题。我不是python专家。有人能解释我如何解决这个问题吗 command = "netsh wlan show profile" ssid = subprocess.check_output(command, shell=True) ssid = ssid.decode("utf-8") ssid_list = re.findall('(?:Profile\s*:\s)(.*)', ssid) for ssid_name in ssid_list:

我尝试了很多不同的方法,但我无法解决这个问题。我不是python专家。有人能解释我如何解决这个问题吗

command = "netsh wlan show profile"
ssid = subprocess.check_output(command, shell=True)
ssid = ssid.decode("utf-8")
ssid_list = re.findall('(?:Profile\s*:\s)(.*)', ssid)
for ssid_name in ssid_list:
    subprocess.check_output(["netsh","wlan","show","profile",ssid_name,"key=clear"])
并给出错误:

Traceback (most recent call last):
  File "C:/Users/Prakash/Desktop/Hacking tool/Execute_sys_cmd_payload.py", line 18, in <module>
    subprocess.check_output(["netsh","wlan","show","profile",ssid_name,"key=clear"])
  File "C:\Users\Prakash\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "C:\Users\Prakash\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 512, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['netsh', 'wlan', 'show', 'profile', 'Prakash_WiFi\r', 'key=clear']' returned non-zero exit status 1.

Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“C:/Users/Prakash/Desktop/Hacking tool/Execute_sys_cmd_payload.py”,第18行,在
子进程。检查\u输出([“netsh”、“wlan”、“show”、“profile”、ssid\u名称,“key=clear”])
文件“C:\Users\Prakash\AppData\Local\Programs\Python\Python38\lib\subprocess.py”,第411行,在check\u输出中
返回运行(*popenargs,stdout=PIPE,timeout=timeout,check=True,
文件“C:\Users\Prakash\AppData\Local\Programs\Python\Python38\lib\subprocess.py”,第512行,正在运行
引发被调用的进程错误(retcode、process.args、,
subprocess.CalledProcessError:命令“['netsh'、'wlan'、'show'、'profile'、'Prakash_WiFi\r'、'key=clear']”返回非零退出状态1。
进程已完成,退出代码为1

使用
检查输出
每当命令异常时,将引发此异常,如非零返回代码所示

一个可能的解决方案是改用。这将运行流程并返回一个实例,该实例具有一个
returncode
属性,您可以检查该属性

import subprocess as sp

command = ["netsh","wlan","show",ssid_name,"key=clear"]
netsh = subprocess.run(command, shell=True, stdout=sp.PIPE)
if netsh.returncode != 0:
    print(f'netsh error: {netsh.returncode}')
else:
   # process netsh.stdout.

从阅读中,您应该使用的命令似乎是
netsh wlan show
(无配置文件).

Welcome!您是否尝试过在shell中执行相同的命令,以查看是否有任何错误输出?此外,您还可以修改您的帖子,以使其更易于阅读。例如,突出显示代码和错误消息;将它们与普通文本分开。感谢您的宝贵意见…及其工作:-)