我有一个使用许多参数并运行的python程序。使用argparse
,我可以定义参数,它们的默认值,它们的解释,并且可以用作方便的容器。因此,从命令行传递参数非常有用。
但是我还可以使用它来传递代码中的参数以进行API调用吗?
答案 0 :(得分:1)
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_argument("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
args = parser.parse_args()
答案 1 :(得分:0)
通过vars()
,您可以像字典一样使用args。
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("-f", "--foo")
parser.add_argument("-b", "--bar")
args = vars(parser.parse_args())
print(f"args foo is {args['foo']}")
print(f"args bar is {args['bar']}")
执行并解析某些参数时的结果如下。
python3 test.py --foo cat --bar dog
args foo is cat
args bar is dog
答案 2 :(得分:0)
从终端运行此文件时,可以通过以下方式传递参数:
python36 commandline_input.py 10
python36 commandline_input.py 10 --foo 12
第一个位置参数是必需的,第二个位置参数是可选的,因此您需要一个标志(--foo)。
commandline_input.py:
import argparse
def main(mandatory_arg, optional_arg):
# your program
pass
if __name__ == '__main__':
parser = argparse.ArgumentParser()
# mandatory
parser.add_argument('bar', help='Some Bar help')
# optional
parser.add_argument('-f', '--foo', default='default foo value',
help='Some foo help')
args = parser.parse_args()
# mandatory args
print(args.bar, '(man)')
# optional args
if args.foo:
print(args.foo, '(opt)')
# your API call
main(args.bar, [args.foo])
答案 3 :(得分:0)
是的,当然argparse
可以用于从命令行和代码传递参数。
例如:
import argparse
# Define default values
parser = argparse.ArgumentParser()
parser.add_argument('--foo', default=1, type=float, help='foo')
# Get the args container with default values
if __name__ == '__main__':
args = parser.parse_args() # get arguments from command line
else:
args = parser.parse_args('') # get default arguments
# Modify the container, add arguments, change values, etc.
args.foo = 2
args.bar = 3
# Call the program with passed arguments
program(args)