【发布时间】:2020-07-31 23:18:57
【问题描述】:
我有一个程序执行 3 个任务的情况,其中有相应的 3 个 可选 参数。 如果 3 个参数中没有传递,则 执行所有 3 个任务。 但是,如果有任何参数被特别提到,那么只做那些任务!
浏览文档后,我想出了一个解决方案,但觉得这不是最短或有效的方法。
在argparse文档中,我使用store_false实现了
my_parser.add_argument('-a', action='store_false')
my_parser.add_argument('-b', action='store_false')
my_parser.add_argument('-c', action='store_false')
但是我必须使用以下逻辑来实现我的要求。
说是否指定了任务 a 和 c 的参数。所以,我们不应该做任务b
a = False
b = True
c = False
l = [a,b,c]
if all(l):
print("Do All 3 tasks")
else:
if not a:
print('Do task A ')
if not b:
print('Do task B')
if not c:
print('Do task C')
> python3 arg_check.py
Do task A
Do task C
但我相信这么多代码?
argparse 库中有没有更好的方法,可以根据任何其他参数覆盖其他参数的值?
【问题讨论】:
-
我在你的问题中没有看到argparse相关的代码,你需要添加一下
-
一些
if声明没有错。argparse应该主要被视为一种解析工具——用户想要什么。从该输入简化执行是次要的。