在我正在撰写的当前脚本中,我有一种非常笨重和hacky处理命令行参数的方法,并且(主要是由于功能蠕变)现在几乎无法维护。
所以,我正在使用argparse重新实现它,但是我在处理这些参数时遇到了一些麻烦。
用法如下:
myscript.py data list
其中data
如果文件夹和list
是文本文件myscript.py data -x xml
:上述变体,其中xml
是xml文件而不是文本文件。我认为使用一个标志(开关?)是最好的,因为这是一个特殊情况,不太可能发生myscript.py -u report
:这对我来说变得棘手,因为这用于更新已经由脚本生成的报告(是的,它只是一个脚本)我遇到了麻烦,因为像data
和list
这样的位置参数是可选的,因为它们并不总是存在,但我的印象是总是需要位置参数?
这是我到目前为止编写的代码(非常不完整):
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')这意味着我可以用同样的方式处理前两个用例,即list
和xml
将存储在同一个参数中
仍然不确定如何处理报告更新用例,因为它没有足够的参数