首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >try except块内的Python break语句

try except块内的Python break语句
EN

Stack Overflow用户
提问于 2020-05-27 00:28:34
回答 1查看 94关注 0票数 0

如何将break语句放入tryexcept块中,我想打印消息` `Invalid interface on the host123‘。

代码语言:javascript
复制
#!/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

代码语言:javascript
复制
# 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()

但是,print语句不仅可以工作,而且还可以打印我想要停止的帮助部分

代码语言:javascript
复制
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'.

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-05-27 01:06:40

使用argparse解析命令行参数。

代码语言:javascript
复制
#!/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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62026920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档