我不知道为什么,但是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)
答案 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