Python控制台错误条件语句

时间:2017-05-11 08:32:22

标签: python macos terminal

我正在使用python上的os模块,即可以访问控制台的功能,我正在尝试创建一种Wi-Fi网络登录工具。这都是在Mac上完成的,我正在使用networksetup -setairportnetwork en0 "SSID" password。我想知道,当密码错误时,如果有一种方法让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)

2 个答案:

答案 0 :(得分:1)

这应该有效。更改异常以捕获引发的异常。

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)) 

答案 1 :(得分:0)

似乎networksetup执行not 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()