【发布时间】:2017-10-13 18:56:56
【问题描述】:
所以我有一个文件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 吗?
edit: 我想我的问题是我想处理默认没有任何参数的情况,即我运行 --> abc.py --a hello
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)
现在我只检查函数内部的列表是否为空,我也可以在函数中处理多个参数
【问题讨论】:
-
请澄清并使用标点符号。什么是“不工作”?向我们展示。
-
我如何存储字符串并将其传递给函数,对不起 stackoverflow 的新手
-
你能展示你的代码和预期的输入/输出吗?
-
@PranavShankar 将您的解决方案作为答案而不是作为问题的一部分发布对您会有所帮助。这可让您将问题标记为“已回答”,并让其他人更轻松地从您的回答中学习。
-
您的初始规格不清楚。
abc.py --a string --> func2是使用-a正确的;还是你的意思是-b。你没有给出-b会触发什么的例子。我强烈建议添加一个print(args),这样您就可以看到不同的输入(和add_argument定义)产生了什么。