argparse 错误

Error with argparse

我在将 argparse 正确设置为 运行 时遇到了一些问题。以前,我的脚本是 运行 如下:

script.py <input_file(s)> <output_filename>

使用如下代码:

cell_list_input  = sys.argv[1:]
cell_list_output = sys.argv[len(cell_list_input)]
cell_list_input  = cell_list_input[:len(cell_list_input)-1]

但是,我想添加一些参数解析,以使其更具可读性和可用性。理想情况下,格式与以下选项类似:

script.py -i <input_file(s)> -o <output_filename>

script.py --input_list <input_file(s)> --output <output_filename>

我正在尝试实现的 argparse 等价物现在看起来像这样:

parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input_list', action='append', dest='input_list', default=[], help='Input list of cell names')
parser.add_argument('-o', '--output', action='store', dest='output', help='Output file destination/name')
cli = parser.parse_args()

我知道我做错了什么,但似乎无法弄清楚是什么。任何帮助表示赞赏。谢谢!

您需要为输入文件列表指定 nargs。试试这个:

parser.add_argument('-i', '--input_list', nargs="+", action='append', dest='input_list', default=[], help='Input list of cell names')

完整示例:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--input_list', nargs="+", default=[], help='Input list of cell names')
parser.add_argument('-o', '--output', help='Output file destination/name')
cli = parser.parse_args()
print cli

结果:

$ python i.py -i a
Namespace(input_list=['a'], output=None)
$ python i.py -i a b c -o d
Namespace(input_list=['a', 'b', 'c'], output='d')