вызов подпроцесса Python OSX - PullRequest
1 голос
/ 16 января 2012

Я пытаюсь получить доступ к интерфейсу Wi-Fi через Python: В Bash я могу использовать следующее

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport -I

-s также можно передать.

Я пытался использовать следующее в Python:

from subprocess import call
call(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport', '-I'])

что-то определенно не правильно - как я получаю в ответ:

Traceback (most recent call last):
  File "ip3.py", line 5, in <module>
    call(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport', '-I'])
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/subprocess.py", line 467, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/subprocess.py", line 741, in __init__
    restore_signals, start_new_session)
  File "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/subprocess.py", line 1356, in _execute_child
    raise child_exception_type(errno_num, err_msg)
OSError: [Errno 2] No such file or directory: '/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport'

Любые идеи приветствуются ... Я просто хочу начать с распечатки этого на экране, сохранения в виде массива и т. Д. *


У меня пока нет достаточно высокой оценки, чтобы ответить на мой собственный вопрос, поэтому я скажу это здесь!

так что я был глуп!

from subprocess import call
call(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport', '-I'])

Работает нормально. Просто нужно удалить /usr/sbin/airport

Ответы [ 2 ]

1 голос
/ 16 января 2012

вызов принять первый аргумент в качестве команды и последующие аргументы этой команды.

В вашем случае команда есть, /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

и два аргумента команды:

  1. / usr / sbin / airport
  2. -I

Итак, вам нужно назвать это как,

from subprocess import call
call(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport' '/usr/sbin/airport', '-I'])
0 голосов
/ 16 января 2012

Попробуйте вот так

from subprocess import call
 call(['/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport', '/usr/sbin/airport', '-I'])

В противном случае он думает, что /usr/sbin/airport является частью первого пути.

...