使用OptionParser与sys.argv

时间:2012-04-09 19:56:29

标签: python

对于脚本,我目前正在使用OptionParser向输入添加变量。但是,我目前的所有选项都是布尔值,而且使用argv进行解析似乎更容易。例如:

 $ script.py option1 option4 option6 

然后执行以下操作:

if 'option1' in argv:
    do this
if 'option2' in argv:
    do this
etc...

如果选项都是布尔值,是否建议使用argv而不是OptionParser

2 个答案:

答案 0 :(得分:7)

  

“然而,我现在的所有选择都是布尔值,而且似乎就是这样   使用argv会更容易解析。“

使用argv没有任何问题,如果使用argv更简单,就没有理由不这样做。

答案 1 :(得分:2)

OptionParser已被弃用,除非你遇到旧版本的python,否则你应该使用ArgParser模块。

对于一次性脚本,自己解析sys.argv没有任何问题。使用参数解析模块而不是自己编写模块有一些优点。

  • 标准化。您是否允许选项“-test”,因为标准通常是多个选项的2个下划线(例如“--test”)。使用模块,您不必担心定义标准,因为它们已经定义。
  • 您需要错误捕获和帮助消息吗?因为你通过ArgParse免费获得了很多。
  • 其他人会维护您的代码吗?已经有很多ArgParse的文档和示例。另外,它有点自我记录,因为你必须指定参数的类型和数量,这在查看sys.argv解析器时并不总是很明显。

基本上,如果你期望你的命令行选项随着时间的推移而改变,或者期望你的代码必须被别人修改,那么ArgParse的开销并不是那么糟糕,并且可能会节省你的时间