Python:如何处理argparse的异常?

时间:2011-08-26 15:19:40

标签: python argparse

我想以这种方式使用我的程序:

pythonScript -f filename

但如果我忘了-f,我仍然想要获取文件名。

所以我希望这个“pythonScript文件名”也可以工作( - >我可以从args.fileName获取文件名或处理异常)

我知道这一定很容易,我找不到办法去做。有人可以帮帮我吗?感谢

import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-f', action='store', dest='fileName',
    default = None, type=str, help='The file name')

try:
    args = parser.parse_args()
except:
    print "xxx"

1 个答案:

答案 0 :(得分:3)

如果你想要-f,你可以用argparse这样做。只需在add_argument函数中包含“required = True”。

请记住,必需选项是矛盾的。不建议您选择所需的选项,但有时会有所帮助。如果未给出该选项,则目标保持为None值(或者它将被分配给您给出的任何默认值,在您的示例中为None)。

编辑:刚刚看到你的编辑,我明白你现在在问什么。 optparse使这个更简单的IMO。看来对于argparse的位置参数,你需要使用add_argument。

让argparse为你做这件事真的没有简单的方法。您可以通过以下方式创造性地模拟它:

parser = argparse.ArgumentParser()
parser.add_argument('file', nargs='?')
parser.add_argument('-f', dest='file_opt')
args = parser.parse_args()
if args.file_opt:
    args.file = args.file_opt

基本上,如果给出了一个文件选项,它会覆盖位置参数。