Python - 不执行异常处理程序

时间:2013-04-15 13:42:40

标签: python argparse

我不知道为什么,但是cislo仍然是10,当我在程序结束时打印它时,异常处理程序没有执行,但我确定异常被引发。

import argparse
import locale
import sys

locale.setlocale(locale.LC_ALL, 'cs_CZ.UTF-8')

cislo = 10

parser = argparse.ArgumentParser(prog='dka', description="Determinizace konecneho automatu(DKA)")
parser.add_argument("--inputs", help='vstupni soubor', default=sys.stdin)

try:
    parser.parse_args(['--input', 'agas', '--input', 'agag'])
except argparse.ArgumentError:
    cislo = 20

print(cislo)

2 个答案:

答案 0 :(得分:2)

由于两个原因,不会引发异常:

不需要--inputs参数。

 parser.add_argument("--inputs", help='vstupni soubor', default=sys.stdin, required=True)

解析器接受--input缩写为--inputs,因为没有歧义。

argparse也不会引发ArgumentError,它只会退出。您可以捕获SystemExit或子类ArgumentParser来覆盖此行为。

答案 1 :(得分:1)

然后扩展课程。

class myparse(argparse.ArgumentParser):
    def exit(self,status,message):
        print("You are bad: ", status, message)
        exit(5)

cislo = 10

parser = myparse(prog='dka', description="Determinizace konecnehoautomatu(DKA)")

给出:

usage: dka [-h] [--inputs INPUTS] 
You are bad:  2 dka: error: unrecognized arguments: --inputss agas