所以我有一个文件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中处理多个参数
答案 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