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