我试图编写一个python脚本,它可以响应用户在运行脚本时输入的任何内容
现在,我的代码是(版本和用法现在不重要)
from optparse import OptionParser
version_msg = ""
usage_msg = ""
parser = OptionParser(version=version_msg, usage=usage_msg)
parser.add_option("-e", "--echo", action="append", dest="input_lines", default=[])
但是如果我尝试运行脚本(python选项.py-e hello world),它只回响了['hello']。我该如何解决这个问题,让它输出['hello','world']?在
我认为这最好通过引用参数来实现,即hello world变为'hello world',这可以确保-e选项消耗整个字符串。 如果您真的需要将字符串拆分为多个部分,例如['hello','world']而不是['hello world'],您可以轻松地对options.e[0]调用split()
对于更复杂的方法,您可以使用回调,下面的链接指向您的相关示例。在
https://docs.python.org/3/library/optparse.html#callback-example-6-variable-arguments
在
argparse
中,这非常简单,它的nargs
参数:
^{pr2}$nargs
用于指定操作执行的字符串数。'+'是指一个或多个。结果收集在一个列表中。它对regex用法的nargs
值建模(例如“?”和“*”也可以)。在查看
optparse
文档,我看到一个nargs
参数,但它必须是一个数字。对于变量数,我们必须使用callback
,如中所述:https://docs.python.org/2/library/optparse.html#callback-example-6-variable-arguments
使用本节中定义的函数:
在}的值,但该分配是由主解析例程自上而下完成的,而不是为
argparse
中,nargs='+'
收集下一个或{
option
本身定义的回调。在一种略显老套的方法:
然后我就跑
^{pr2}$输出:
相关问题 更多 >
编程相关推荐