我一直在研究一点Python,我遇到了getopt
模块,用于解析命令行参数。
基本上,我有以下代码:
import sys, getopt
print("The list of %s arguments passed:" % len(sys.argv))
# Print each argument
for arg in sys.argv:
print(arg)
print()
# Now print parsed arguments
opts, args = getopt.getopt(sys.argv[1:], "ab:cd", ["arbitrary", "balance=", "cite"])
for opt in opts:
print(opt)
print()
# Print the arguments returned
print(args)
但是,我需要-b
选项来获取两个不同的参数,例如-b one two
。我已经尝试在b
的参数列表中getopt
之后放置两个冒号,但它不起作用。
如果有人可以使用getopt
模块告诉我如何执行此操作并发布示例,那将非常有用!
答案 0 :(得分:1)
忘记getopt,使用 Docopt (真的):
如果我理解得很好,你希望用户传递2个参数来平衡。这可以通过以下方式实现:
doc = """Usage:
test.py balance= <b1> <b2>
test.py
"""
from docopt import docopt
options, arguments = docopt(__doc__) # parse arguments based on docstring above
此程序接受:test.py balance= X Y
或无参数。
现在,如果我们添加'引用'和'任意'选项,这应该给我们:
doc = """
Usage:
test.py balance= <b1> <b2>
test.py
Options:
--cite -c Cite option
--arbitrary -a Arbitrary option
"""
该程序现在接受选项。 示例:
test.py balance= 3 4 --cite
=> options = {
"--arbitrary": false,
"--cite": true,
"<b1>": "3",
"<b2>": "4",
"balance=": true
}
提示:此外,您可以在代码中使用它之前test your documentation string directly in your browser。
救生员!