簡體   English   中英

Python 在 try except 塊中的 break 語句

[英]Python break statement within try except block

如何在tryexcept塊中放置break語句,我想在 host123 上打印 Message `Invalid interface。

#!/usr/bin/python
# cat /proc/net/bonding/bond0

import sys
import re
import socket
import os

system_name = socket.gethostname()

def usage():
        print '''USAGE: %s [options] [bond_interface]

Options:
        --help, -h      This usage document

Arguments:
        bond_interface  The bonding interface to query, eg. 'bond0'. Default is 'bond0'.
''' % (sys.argv[0])
        sys.exit(1)

# Parse arguments
try:
        iface = sys.argv[1]
        if iface in ('--help', '-h'):
                usage()
except IndexError:
        iface = 'bond0'

# Grab the inf0z from /proc
try:
        bond = open("/proc/net/bonding/%s" % iface).read()

except IOError:
        print "ERROR: Invalid interface %s %s\n" % (iface, system_name)
        usage()

我嘗試將 if 條件設置如下,但給出SyntaxError: 'break' outside loop

# Grab the inf0z from /proc
try:
        bond = open("/proc/net/bonding/%s" % iface).read()
        if not os.path.exists("bond"):
            break
except IOError:
        print "ERROR: Invalid interface %s %s\n" % (iface, system_name)
        usage()

但是打印語句有效,但也打印我想停止的幫助部分

ERROR: Invalid interface apc4502.nxdi.nl-cdc01.nxp.com bond0

USAGE:  [options] [bond_interface]

Options:
        --help, -h      This usage document

Arguments:
        bond_interface  The bonding interface to query, eg. 'bond0'. Default is 'bond0'.

任何幫助,將不勝感激。

使用argparse解析命令行 arguments。

#!/usr/bin/python
# cat /proc/net/bonding/bond0

import sys
import socket
import os

import argparse

p = argparse.ArgumentParser()
p.add_argument('bond_interface', default='bond0')
args = p.parse_args()

system_name = socket.gethostname()

bond_name = os.path.join("/proc/net/bonding", args.bond_interface)

try:
    with open(bond_name) as f:
        bond =  f.read()
except IOError:
    print(f"ERROR: Problem reading from {bond_name} on {system_name}", file=sys.stderr)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM