Python命令行参数指定给变量
我必须将命令行参数存储在变量中,或者为其指定默认值 下面是我正在尝试的Python命令行参数指定给变量,python,logic,command-line-arguments,Python,Logic,Command Line Arguments,我必须将命令行参数存储在变量中,或者为其指定默认值 下面是我正在尝试的 import sys Var=sys.argv[1] or "somevalue" 如果我没有指定任何参数,我将从索引中获取错误。如何解决这个问题?好问题 Var=sys.argv[1] if len(sys.argv) > 1 else "somevalue" 我认为最好的解决办法是 try: var = sys.argv[1] except IndexError: var = "somevalu
import sys
Var=sys.argv[1] or "somevalue"
如果我没有指定任何参数,我将从索引中获取错误。如何解决这个问题?好问题
Var=sys.argv[1] if len(sys.argv) > 1 else "somevalue"
我认为最好的解决办法是
try:
var = sys.argv[1]
except IndexError:
var = "somevalue"
使用命令行处理模板尝试以下操作:
def process_command_line(argv):
...
# add your option here
parser.add_option('--var',
default="somevalue",
help="your help text")
def main(argv=None):
settings, args = process_command_line(argv)
...
print settings, args # <- print your settings and args
内置模块正是为了完成以下任务:
import argparse
# Set up argument parser
ap = argparse.ArgumentParser()
# Single positional argument, nargs makes it optional
ap.add_argument("thingy", nargs='?', default="blah")
# Do parsing
a = ap.parse_args()
# Use argument
print a.thingy
或者,如果您坚持使用Python 2.6或更早版本,并且不希望在上添加需求,您可以手动执行类似的操作,例如:
import optparse
opter = optparse.OptionParser()
# opter.add_option("-v", "--verbose") etc
opts, args = opter.parse_args()
if len(args) == 0:
var = "somevalue"
elif len(args) == 1:
var = args[0]
else:
opter.error("Only one argument expected, got %d" % len(args))
print var
也许可以使用一种更结构化的方法,见@Barmar:原则上是的,但对于这种情况来说,这太过分了,你不觉得吗?也许吧。我们看不到完整的上下文。为什么不直接添加选项('--var',default=“somevalue”)?看到我的答案了。很好的一行代码,我几周前才开始使用这种类似perl的方法。