Python argparse的默认参数

Python argparse的默认参数,python,argparse,argv,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字符串 工作 我

所以我有一个文件
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您应该
sys
Python标准库模块:

#!/usr/bin/env python

import sys

print sys.argv[1] // first argument
它将在您的案例中的命令行上打印
string
输出

传递给Python脚本的命令行参数列表。argv[0] 脚本名称(这取决于操作系统是否为 完整路径名或不完整)。如果命令是使用-c执行的 解释器的命令行选项,argv[0]设置为字符串 “-c”。如果没有向Python解释器传递脚本名称,则为argv[0] 是空字符串


请澄清并使用标点符号。什么是“不起作用”?向我们展示。我如何存储字符串并将其传递到函数中,对不起,StackOverflow的新功能您可以展示您的代码和预期的输入/输出吗?@PranavShankar将您的解决方案发布为答案,而不是问题的一部分,这将对您有所帮助。这可以让你将问题标记为“已回答”,并让其他人更容易从你的答案中学习。你最初的说明不清楚
abc.py--a字符串-->func2
是否使用了
-a
正确;或者你是说
-b
。您没有给出
-b
将触发什么的示例。我强烈建议您添加一个
print(args)
,这样您就可以看到不同的输入(和
add_参数
定义)产生了什么。@CIsForCookies,因为原来他是在问这个问题。我认为这是关于位置参数的,因为缺乏信息。这个问题可能是重复的…@CIsForCookies请看问题的原始版本:@CIsForCookies我开始根据他的问题的版本写我的答案,然后我完成并单击“发布你的答案”。然后页面刷新,我看到了更新的版本,但为时已晚。我可以删除我的答案,但删除一个答案会在堆栈溢出的业务逻辑中造成惩罚,因此我不想删除我的答案。我也不能更新我的答案,因为我不确定他到底在问什么。
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)
#!/usr/bin/env python

import sys

print sys.argv[1] // first argument