Ошибка FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘netsh’

#python #subprocess #errno #netsh

#python #подпроцесс #ошибка отсутствует #netsh

Вопрос:

Это мой код на python для просмотра устройств, подключенных к моему WIFI:

   import subprocess

  meta_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles'])
  data = meta_data.decode('utf-8', errors="backslashreplace")
  data = data.split('n')
  names = []

  for i in data:
      if "All Users Profiles" in i:
          i = i.split(":")
          i = i[1]
          i = i[1:-1]
          names.append(i)
  print("Systems Connected To Your WIFI ARE ")
  print()
  for name in names:
      print(name)
  

И это ошибка, которую я продолжаю получать после запуска кода:

    FileNotFoundError: [Errno 2] No such file or directory: 'netsh'
  

Комментарии:

1. Что именно netsh ?

2. @klaus D. Netsh — это утилита для создания сценариев командной строки, которая позволяет отображать или изменять сетевую конфигурацию компьютера, который в данный момент запущен.

Ответ №1:

Вам нужно вызвать его через оболочку, используя cmd.exe /c или передавая shell=true в check_output . subprocess Пакет не запускается в командной строке по умолчанию в Windows.

 Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output(["dir"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  ...
FileNotFoundError: [WinError 2] The system cannot find the file specified
>>> subprocess.check_output(["cmd.exe","/c","dir"])
b' ... '
>>> subprocess.check_output(["dir"], shell=True)
b' ... '
  

Это только то, что вам нужно сделать в Windows.

 Python 3.8.0 (default, Oct 28 2019, 16:14:01)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> subprocess.check_output(["ls"])
b' ... '
  

Комментарии:

1. он исправляет ОШИБКУ, но не показывает мне устройства, которые подключили Wi-Fi, он просто показывает мне результат печати («»). не могли бы вы помочь!. Спасибо

2. Ваш код ищет «Все профили пользователей», но фактический вывод netsh печатает «Весь профиль пользователя». Ваш код работает для меня, когда я вношу это изменение.