python 使用 argparse 获取位置参数的长度
python get length of the positional arguments with argparse
我正在学习如何使用位置参数和可选参数。
我的输入:
$ python generate_data.py output --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx
代码:
import argparse
parser = argparse.ArgumentParser(description='Generate an output file from the contents of *.spt and *.fpx.')
parser.add_argument('output_file') # Number of output files should be 1.
parser.add_argument('--spt', required=True, nargs='+', help='spt files') # Number of *.spt should be >= 1.
parser.add_argument('--fpx', required=True, nargs='+', help='fpx files') # Number of *.fpx should be >= 1.
args = parser.parse_args()
print(len(args.output_file), len(args.spt), len(args.fpx))
if len(args.output_file) != 1 or len(args.spt) != len(args.fpx):
parser.print_help()
exit(-1)
output
是generate_data.py
的输出文件,输出文件的个数应该是1。
--spt
是必须的参数,后接 *.spt,其编号应为 >= 1
.
--fpx
是必须的参数,后接 *.fpx,其编号应为 >= 1
。
我的问题如下:
1. 我得到了 len(args.output_file) == 6
,但没有 1. 如何确保用户只输入一个输出文件?
2.我想输出文件也可以像下面这样放在命令行的末尾。
$ python generate_data.py --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx output
已经完成了。试试看:脚本不会接受两个文件名。您感到困惑,因为 args.output_file 是一个字符串。在您的情况下,您输入了一个长度为 6 的文件名,这解释了为什么 len(args.output_file) 是 6。其他变量 args.spt 和 args.fpx 是 lists 因为您使用 nargs
关键字定义了这些参数。所以 len(args.spt) returns 列表中有多少项。
这没有多大意义。由于 --fpx 和 --spt 使用多个文件名,您无法判断命令行末尾的文件名是属于最后一个列表还是输出文件的名称。
我正在学习如何使用位置参数和可选参数。
我的输入:
$ python generate_data.py output --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx
代码:
import argparse
parser = argparse.ArgumentParser(description='Generate an output file from the contents of *.spt and *.fpx.')
parser.add_argument('output_file') # Number of output files should be 1.
parser.add_argument('--spt', required=True, nargs='+', help='spt files') # Number of *.spt should be >= 1.
parser.add_argument('--fpx', required=True, nargs='+', help='fpx files') # Number of *.fpx should be >= 1.
args = parser.parse_args()
print(len(args.output_file), len(args.spt), len(args.fpx))
if len(args.output_file) != 1 or len(args.spt) != len(args.fpx):
parser.print_help()
exit(-1)
output
是generate_data.py
的输出文件,输出文件的个数应该是1。
--spt
是必须的参数,后接 *.spt,其编号应为 >= 1
.
--fpx
是必须的参数,后接 *.fpx,其编号应为 >= 1
。
我的问题如下:
1. 我得到了 len(args.output_file) == 6
,但没有 1. 如何确保用户只输入一个输出文件?
2.我想输出文件也可以像下面这样放在命令行的末尾。
$ python generate_data.py --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx output
已经完成了。试试看:脚本不会接受两个文件名。您感到困惑,因为 args.output_file 是一个字符串。在您的情况下,您输入了一个长度为 6 的文件名,这解释了为什么 len(args.output_file) 是 6。其他变量 args.spt 和 args.fpx 是 lists 因为您使用
nargs
关键字定义了这些参数。所以 len(args.spt) returns 列表中有多少项。这没有多大意义。由于 --fpx 和 --spt 使用多个文件名,您无法判断命令行末尾的文件名是属于最后一个列表还是输出文件的名称。