gpt4 book ai didi

python argparse - 我可以只使用互斥的可选参数还是有更好的方法

转载 作者:行者123 更新时间:2023-11-30 23:36:57 25 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本从网络下载文件,执行一些处理并将数据存储到 mysql 数据库中。

我正在使用 argparse 来接受参数。本质上,该脚本将执行以下四件事之一:

1) 从网络下载用户提供的文件名并执行处理/数据库插入。

2) 根据昨天的日期下载当前最新的文件名。我有一个 cron 作业,每晚凌晨 2 点后运行这部分。

3) 执行与 #2 相同的操作,但需要一个附加文件。

4) 处理当前文件夹中的用户定义文件并将其保存到同一文件夹中的输出文件。

该脚本只能执行上述 4 件事中的 1 件事。因此,我想我可以使用互斥的可选参数,如下所示:

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-f','--filename',action='store',nargs=1,help='Filename to download')
group.add_argument('-b','--bulkfile',action='store',nargs=2,help='Bulk filename to process and save')
group.add_argument('-l', '--load', action='store_true', help='Download current load data')
group.add_argument('-s', '--supply', action='store_true', help='Download current supply data')
args = parser.parse_args()

if args.filename:
do something
elif args.bulkfile:
do something
elif args.load:
do something
elif args.supply:
do something
else:
print "Improper usage. Can only use [-f | -b | -l| -s]"
return

我知道这并不理想。我宁愿让 argparse 处理它的使用部分。我正在寻找实现我的目标的最佳方法。我很感激你的帮助。

最佳答案

argparse 将为您处理使用情况。在不带参数的情况下运行脚本时,我收到此错误消息:

usage: test.py [-h] (-f FILENAME | -b BULKFILE BULKFILE | -l | -s)
test.py: error: one of the arguments -f/--filename -b/--bulkfile -l/--load -s/--supply is required

同时使用-l-s运行我得到

usage: test.py [-h] (-f FILENAME | -b BULKFILE BULKFILE | -l | -s)
test.py: error: argument -s/--supply: not allowed with argument -l/--load

解析器会自动为您处理互斥参数的错误消息。

关于python argparse - 我可以只使用互斥的可选参数还是有更好的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com