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')
我在将 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')