python使用argparse获取位置参数的长度

python使用argparse获取位置参数的长度,python,argparse,Python,Argparse,我正在学习如何使用位置参数和可选参数。 我的意见: $ python generate_data.py output --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx 代码: output是generate_data.py的输出文件,输出文件的数量应为1。 --spt是必需的参数,后跟*.spt,其编号应为=1 --fpx是必需的参数,后跟*.fpx,其编号应为>=1 我的问题如下: 1.我得到了len(args.out

我正在学习如何使用位置参数和可选参数。
我的意见:

$ python generate_data.py output --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx
代码:

output
generate_data.py
的输出文件,输出文件的数量应为1。
--spt
是必需的参数,后跟*.spt,其编号应为
=1

--fpx
是必需的参数,后跟*.fpx,其编号应为
>=1

我的问题如下:
1.我得到了
len(args.output\u文件)==6
,但不是1。如何确保用户只输入一个输出文件?
2.我希望输出文件也可以放在命令行的末尾,如下所示

 $ python generate_data.py --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx output
  • 已经完成了。试试看:脚本将不接受两个文件名。您会感到困惑,因为args.output\u文件是一个字符串。在本例中,您输入了一个长度为6的文件名,这解释了为什么len(args.output_file)是6。其他变量args.spt和args.fpx是列表,因为您使用
    nargs
    关键字定义了这些参数。因此len(args.spt)返回列表中有多少项

  • 这没有多大意义。由于--fpx和--spt使用多个文件名,因此无法判断命令行末尾的文件名是属于最后一个列表还是输出文件的名称。如果您想通过使用文件扩展名来计算输入了多少种类型的文件来解决这个问题,那么您最好接受文件名列表的自由格式输入,并完全删除argparse内容


  • 在调试期间,我喜欢
    打印(args)
    。这样,我看到的解析结果没有任何期望。在本例中,它将显示什么
    otuput\u文件
    是字符串,而不是列表。2) 理想情况下,
    argparse
    应该认识到它需要保留一个字符串作为剩余位置,但该增强功能仍在等待。
     $ python generate_data.py --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx output