可能重复:
What's the best way to grab/parse command line arguments passed to a Python script?
我希望能够在我的Python 2.6程序中解析命令行参数。
理想情况下,我希望能够处理这些情况:
# Show some help
./myprogram --help
# These are equivalent
./myprogram --block=1
./myprogram -b 1
# This means verbose, and twice as verbose:
./myprogram -v
./myprogram -vv
答案 0 :(得分:32)
查看argparse模块(或optparse以获取较旧的Python版本)
请注意argparse
/ optparse
是getopt
的更新,更好的替代品,所以如果你是新手,那么他们就是推荐选项。来自getopt
文档:
注意getopt模块是命令行选项的解析器,其API设计为C getopt()函数的用户所熟悉。不熟悉C getopt()函数或想要编写更少代码并获得更好帮助和错误消息的用户应该考虑使用argparse模块。
答案 1 :(得分:3)
Python内置了参数处理,使用getopt
模块。
它可以处理长和短形式的参数以及“裸”和参数化版本(--help
与--num=7
)。
对于您的特定用例(稍微多一些),您可能会看到类似的内容:
opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"])
如果它允许使用-vv
这样的多字符单连字符变体,我不确定是不是最重要的。我只是自己使用-v
和-V
来让我的生活更轻松。
答案 2 :(得分:1)
比该链接更好的选择是模块OptParse或GetOpt,并且根据您使用的Python版本,最新的...... .2.7和3.1.2,内置了更新的模块。文档在官方python.org参考文献中有一组非常丰富的文档和这些模块的示例。如果你去python.org并快速搜索OptParse或GetOpt,你将拥有你需要的一切。
答案 3 :(得分:1)
答案 4 :(得分:-4)
可能有更好的方法,但我会使用sys.argv并在需要的地方放入条件,即
if '--v' or '--vv' in sys.argv :
print 'verbose message'