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

时间:2017-01-20 14:51:14

标签: python command-line-interface command-line-arguments argparse

我正在开发一个Python脚本,它将利用CLI参数将.xls / .xlsx文件转换为.csv。由于.xsl / .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 个答案:

答案 0 :(得分:2)

--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']])