我有一个函数:
def x(a,b,c)
如何从命令行收集符合此模式的变量值?
python test.py --x_center a --y_center b c (例如,c具有3、4或更多的值)
发布于 2011-12-02 12:25:57
你可以这样做:
import argparse
def x(x_center, y_center, values):
print "X center:", x_center
print "Y center:", y_center
print "Values:", values
def main():
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument('-x', '--x-center', type=float, required=True)
parser.add_argument('-y', '--y-center', type=float, required=True)
parser.add_argument('values', type=float, nargs='*')
args = parser.parse_args()
x(args.x_center, args.y_center, args.values)
if __name__ == '__main__':
main()试试看:
$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]要使用the argparse module,通常需要从一个main函数(以及一些调用它的样板)开始。在main函数中,您需要create an ArgumentParser。在那之后,你会想要添加一些参数。
要添加参数,可以使用add_argument。
parser.add_argument('-x', '--x-center', type=float, required=True)在这里,我们添加了一个期权-x,它也有一个长期权变体--x-center。我们传递给add_argument的type告诉它要求它是一个浮点数(如果它不是一个有效的float,就会出错)。我们还告诉argparse它是必需的;如果没有提供,就会出错。
parser.add_argument('values', type=float, nargs='*')这和前面一样,但是因为我们传递给它的字符串不是以破折号开头的,所以它假定它不是一个选项,而是一个非选项参数。同样,我们告诉它我们需要floats。nargs允许您指定它需要多个参数。*指定我们需要任意数量的参数。
最后,我们使用parse_args解析命令行。这将返回一个我们将存储的对象。
然后,您可以访问该args对象上的选项和参数,并在程序中执行相关操作。
https://stackoverflow.com/questions/8351732
复制相似问题