sys.argv
在运行程序时在shell命令行中获取参数。如何使这些参数成为可选参数
我知道我可以使用try
-except
。但是这迫使您要么不插入额外的参数,要么插入所有额外的参数,除非您嵌套了更多的try
-except
,这使得代码看起来不那么可读
编辑
假设我想要以下功能,我该如何实现
$ python program.py add Peter
'Peter' was added to the list of names.
这个add
参数(而不是--add
)是可选的,因此
$ python program.py
只是正常运行程序
Tags:
您应该使用命令行解析器,例如getopt或argparse。这些选项允许您定义具有默认值的可选选项
编辑 要解决您的编辑问题
以下所有工作都与此相关
如果在每个名称前要求“add”的优点是,如果在添加名称后有任何其他参数需要查找,则可以。 如果您想通过说
python program.py add Peter Jane
来传递多个名称,可以通过相当简单的更改来完成原创
看来你最好用像optpass这样的东西。但是,由于
sys.argv
是一个列表,您可以检查它的长度然后使用arg1和arg2作为“可选”命令行参数。这将允许您传递1、2或0个命令行参数(实际上您可以传递2个以上的参数,它们将被忽略)。这还假设参数有一个已知的顺序,如果您想使用像
-a
这样的标志后跟一个值,请查看optpassehttp://docs.python.org/library/optparse.html?highlight=optparse#optparseplac是其他答案中给出的标准库模块的替代方案。 它允许通过annotations定义命令行参数。从文档中,示例8演示可选参数语法:
Argparse示例:
请注意,该约定用于将可选参数作为“-add”提供,而子命令作为“add”提供。有一个subcommand implementation in argparse
相关问题 更多 >
编程相关推荐