2012-01-16 87 views
1

我试图通过Python来访问WiFi接口: 在bash,我可以使用下面的蟒子呼叫OSX

/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' 

任何想法将受到欢迎...我只是想开始打印这个屏幕,节省阵列等...


我没有足够高的ra要回答我自己的问题,所以我在这里说!

,所以我太傻了!

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

工作正常。只需要删除/usr/sbin/airport

+0

isent的 “/ usr/sbin目录/机场” 部分的说法?无论如何,你可以尝试'shell = true'。 – WeaselFox 2012-01-16 10:33:40

+0

不错,你通过我自己得到了答案:) – avasal 2012-01-16 10:38:57

+0

谢谢,我感觉有点愚蠢。发布后,我再次看了看,注意到! – beoliver 2012-01-16 10:44:21

回答

1

呼叫采取的第一个参数为命令和随后的这个命令的参数。

在你的情况 命令, /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

和命令的两个参数,

  1. /usr/sbin目录/机场
  2. -I

所以,你需要调用它的,

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

尝试这样

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

否则它认为/usr/sbin/airport是第一路径的一部分。

+0

我认为这是因为我正在将用于创建alais的代码重新命名为'/ usr/sbin/airport'。这绝对是没有它的工作。 – beoliver 2012-01-16 10:36:16