Python命令行参数赋值给变量

pik*_*ika 3 python logic command-line-arguments

我必须将命令行参数存储在变量中或为其分配默认值.

我正在尝试的是下面

import sys
Var=sys.argv[1] or "somevalue"
Run Code Online (Sandbox Code Playgroud)

如果我没有指定任何参数,我将从索引中获取错误.怎么解决这个?

Mic*_*per 7

Var=sys.argv[1] if len(sys.argv) > 1 else "somevalue"
Run Code Online (Sandbox Code Playgroud)


dbr*_*dbr 5

内置argparse模块专门用于执行以下类型的任务:

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
Run Code Online (Sandbox Code Playgroud)

或者,如果您坚持使用 Python 2.6 或更早版本,并且不希望添加向后移植的 argparse 模块的要求,您可以手动执行类似的操作,如下所示:

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
Run Code Online (Sandbox Code Playgroud)