[英]Python break statement within try except block
如何在try
和except
塊中放置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.