Python 多个命令行参数
我一直在学习一点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
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
}