Python中使用argparse的可选命令行参数

时间:2015-09-15 09:42:55

标签: python python-3.x command-line python-3.4 argparse

在我正在撰写的当前脚本中,我有一种非常笨重和hacky处理命令行参数的方法,并且(主要是由于功能蠕变)现在几乎无法维护。

所以,我正在使用argparse重新实现它,但是我在处理这些参数时遇到了一些麻烦。

用法如下:

  • myscript.py data list其中data如果文件夹和list是文本文件
  • myscript.py data -x xml:上述变体,其中xml是xml文件而不是文本文件。我认为使用一个标志(开关?)是最好的,因为这是一个特殊情况,不太可能发生
  • myscript.py -u report:这对我来说变得棘手,因为这用于更新已经由脚本生成的报告(是的,它只是一个脚本)

我遇到了麻烦,因为像datalist这样的位置参数是可选的,因为它们并不总是存在,但我的印象是总是需要位置参数?

这是我到目前为止编写的代码(非常不完整):

parser = argparse.ArgumentParser(description='Does shiny stuff')
parser.add_argument("data", help="the path of the folder")
parser.add_argument("-u", "--update", help="used to specify the report to be updated")
parser.parse_args()

如果有人能给我一些关于如何实现这一目标的指示,或者可能为什么我试图这样做,请做!

谢谢:)

编辑:我认为对于第二个用例,我可以这样做:     parser.add_argument(“ - x”,“ - xml”,action ='store_true')

这意味着我可以用同样的方式处理前两个用例,即listxml将存储在同一个参数中

仍然不确定如何处理报告更新用例,因为它没有足够的参数

0 个答案:

没有答案