我正在编写一个脚本,该脚本从 Web 下载文件,执行一些处理并将数据存储到 mysql 数据库中。
我argparse
用于接受论点。本质上,该脚本将做 4 件事中的 1 件事:
1) 从网上下载用户提供的文件名并执行处理/db-insert。
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
处理它的使用部分。我正在寻找实现目标的最佳方式。我很感激帮助。