Python控制台错误条件语句

2024-10-02 14:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩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)

Tags: 模块the函数inputospasswordnetworkprint
2条回答

这应该管用。更改异常以捕获引发的异常。你知道吗

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

似乎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()

相关问题 更多 >