【发布时间】:2016-11-25 05:59:10
【问题描述】:
我正在编写一个 Python 脚本来处理一个机器可读的文件并输出一份关于其中包含的数据的人类可读的报告。
我想提供将数据输出到stdout (-s)(默认情况下)或txt(-t)或csv(-c)文件的选项。我想要一个默认行为的开关,就像许多命令一样。
就Usage: 而言,我希望看到类似script [-s | -c | -t] input file 的内容,如果没有传递任何参数,则将-s 设为默认值。
我目前有(对于相关的参数,简而言之):
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-s', '--stdout', action='store_true')
group.add_argument('-c', '--csv', action='store_true')
group.add_argument('-t', '--txt', action='store_true')
args = parser.parse_args()
if not any((args.stdout, args.csv, args.txt)):
args.stdout = True
因此,如果没有设置-s、-t 或-c,则stdout (-s) 被强制为True,就像-s 已被传递一样。
有没有更好的方法来实现这一点?或者出于某种原因,另一种方法是否会被普遍认为“更好”?
注意:我使用的是 Python 3.5.1/2,我不担心与其他版本的兼容性,因为目前没有计划与其他人共享此脚本。只是为了让我的生活更轻松。
【问题讨论】:
-
我知道这不适用于 每个 情况,但这听起来与
choices选项的用途完全一样:parser.add_argument('--output', default='stdout', choices=['stdout', 'csv', 'txt'])
标签: python python-3.x argparse