argparse的默认参数

时间:2017-05-15 05:04:23

标签: python argparse argv

所以我有一个文件abc.py

--a string
--b string

作为可选参数 我希望能够做到

abc.py string --> func1
abc.py string --a string --> func1 and func2
abc.py string --a string --> func1 and func2
abc.py --a string --> func2

等等 我设法让--a和--b工作(分开和一起) 我无法做到 abc.py字符串 工作的 我应该结合使用argv和argparse吗?

编辑我想我的问题是我想处理默认情况下没有任何参数的情况,即我运行 - > abc.py --a hello< - 我需要它们以任意组合运行(没有指定,默认和指定,指定a和b,只指定默认值等)

if __name__ == '__main__':
parser=argparse.ArgumentParser()
parser.add_argument("default", help="default")
parser.add_argument("--a","-a", help="a")
parser.add_argument("--b","-b", help="b")
args=parser.parse_args()
if args.a:
    a_func(args.a)                   
if args.b:
    b_func(args.b)
default_func(args.default)

编辑:好的家伙我让它工作,我做的是

parser=argparse.ArgumentParser()
parser.add_argument("default",nargs="*", help="default")
parser.add_argument("--a","-a",nargs="*", help="a")
parser.add_argument("--b","-b",nargs="*", help="b")
args=parser.parse_args()
a_func(args.a)                   
b_func(args.b)
default_func(args.default)

现在我只是检查列表中是否为空,并且我也可以在func中处理多个参数

1 个答案:

答案 0 :(得分:1)

你应该是sys Python标准库的模块:

#!/usr/bin/env python

import sys

print sys.argv[1] // first argument

在您的情况下,将在命令行上打印string输出。

  

传递给Python脚本的命令行参数列表。的argv [0]   是脚本名称(它取决于操作系统是否为   是否完整路径名)。如果使用-c执行命令   解释器的命令行选项,argv [0]设置为字符串   ' -c&#39 ;.如果没有脚本名称传递给Python解释器,argv [0]   是空字符串。 sys.argv