2017-05-11 12 views
0

私はPython上のosモジュール、つまりあなたがコンソールにアクセスできる機能を利用しています。私は一種のWi-Fiネットワークサインインツールを作成しようとしています。これはすべてMac上で行われ、私はnetworksetup -setairportnetwork en0 "SSID" passwordを使用しています。私は、パスワードが間違っている場合、Pythonがそれに応答する方法があれば疑問に思っていました。try ... except ... statmentのようなものです。Pythonコンソールのエラー条件文

import os 
ssid = input("Please enter the network SSID \n") 
password = input("Please enter the network password \n") 
print ("Connecting to...") 
print ("SSID: " + ssid) 
print ("Password: " + password) 
os.system("networksetup -setairportnetwork en0 \"" + ssid + "\" " + password) 

ありがとう: ここでは、現在のコードです!

+1

私たちが編集できるようにコードを投稿してください。 –

答えて

1

これは動作するはずです。 Exceptionを変更して例外をキャッチします。

import os 
success = False 
while not success: 
    ssid = input("Please enter the network SSID \n") 
    password = input("Please enter the network password \n") 
    print ("Connecting to...") 
    print ("SSID: " + ssid) 
    print ("Password: " + password) 
    try: 
     os.system("networksetup -setairportnetwork en0 \"" + ssid + "\" " + password) 
     success = True 
    except Exception as e: 
     print("verification failed") 
     print("Exception: {}".format(e)) 
+0

パスワードのエラーは「エラー:-3900」なので、例外の代わりに何を置きますか? – JohnyNich

+0

サブプロセスを使用して応答をチェックして、応答を確認してから、 'os'を使用してください –

0

networksetupnot behave wellを行い、エラーでさえも0を返すようです。つまり、プログラムの出力を解析する必要があります。

import subprocess 
import sys 

def networksetup(ssid, password): 
    cmd = 'networksetup -setairportnetwork en0 "{}" {}'.format(ssid, password) 
    output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT) 
    return output 

def main(): 
    ssid = input("Please enter the network SSID \n") 
    password = input("Please enter the network password \n") 
    print ("Connecting to...") 
    print ("SSID: " + ssid) 
    print ("Password: " + password) 
    output = networksetup(ssid, password) 
    if 'Error: -3900' in output: 
     print("Password error: {}".format(output)) 
     sys.exit(1) # remove this if you don't want to exit on error 

if __name__ = "__main__": 
    main()