Python 多个命令行参数

Python 多个命令行参数,python,command-line,command-line-arguments,Python,Command Line,Command Line Arguments,我一直在学习一点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.getop

我一直在学习一点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
选项来接受两个不同的参数,例如
-b12
。我曾尝试在
getopt
的参数列表中的
b
后面加两个冒号,但没有成功


如果有人能告诉我如何使用
getopt
模块并发布示例,那将非常有用

忘记getopt,使用(真的):

如果我理解的很好,您希望用户传递两个参数来平衡。这可以通过以下方式实现:

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= 3 4 --cite

=> options = {
    "--arbitrary": false, 
    "--cite": true, 
    "<b1>": "3", 
    "<b2>": "4", 
    "balance=": true
}
test.py balance=3 4--引用
=>选项={
“--武断”:错误,
“--引用”:正确,
"": "3", 
"": "4", 
“balance=”:true
}
提示:此外,在代码中使用它之前,您可以


救生员

请注意,
getopt
已被弃用;改用更通用的。它支持每个选项有多个值。相关的read-它提到并使用了
argparse
,并用双引号将参数括起来
-b“带空格的参数”
@MartijnPieters ahhh,我不知道!有时候我忘了我在读几年前写的《潜入Python》。。。也许如果你把你的评论变成一个答案,我会接受它作为主要答案:)@MatGomes为什么不把
-b
分成两个参数呢?我目前正在研究argparse模块,一旦我理解了argparse,我会看看docopt模块。哪一个应该更好/更简单?argparse还是docopt?@MatGomes我学会了argparse,然后是docopt。我意识到我学习argparse是徒劳的,因为Docopt很简单,你不必学习API,你只需要学习(如果你还不知道的话)一个标准。这在Linux手册页中也有使用,所以你应该习惯它
test.py balance= 3 4 --cite

=> options = {
    "--arbitrary": false, 
    "--cite": true, 
    "<b1>": "3", 
    "<b2>": "4", 
    "balance=": true
}