Python argparse带有可重复参数对的参数

7

我正在开发一个Python脚本,它将利用CLI参数将.xls/.xlsx文件转换为.csv文件。由于.xls/.xlsx文件可以有多个工作表,因此每个工作表都需要单独转换为单独的.csv文件。我想要做的是使用argparse添加一个必需的参数来指定要转换的工作表,以及一个可选的参数来指定生成的.csv文件的名称。以下是我希望命令看起来的示例:

python converter.py --sheets <sheet-name> [sheet-rename]

我不确定如何使用argparse添加带有两个参数的参数。

此外,我想要为这个参数添加更多的功能。如果可能的话,我想让它允许重复参数以允许转换更多的表格。我不确定命令语法会是什么样子,但可能是这样:

python converter.py --sheets (<sheet-name> [sheet-rename])...
python converter.py --sheets sheet1 sheet1_rename sheet2 sheet2_rename

这可能会变得太复杂,但任何建议都将是极好的。
1个回答

10

--sheet 可以作为一个选项定义,它接受两个参数,这两个参数都会被累加到列表中。

p.add_argument('--sheet', action='append', nargs=2)

运行命令 python converter.py --sheet old1 new1 --sheet old2 new2 将产生一个列表的列表:

>>> print p.parse_args("--sheet old1 new1 --sheet old2 new2".split())
Namespace(sheet=[['old1', 'new1'], ['old2', 'new2']])

太棒了!我之前不知道可以使用action='append'来多次调用可选参数以创建列表。我正在更改的一件事是将nargs设置为'+',因为我希望提供重命名作为一个选项,如果没有指定,则.csv文件将与工作表具有相同的名称保存。谢谢! - dselgo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接