add_subparsers 无法识别 sub_argument
add_subparsers doesn't identify sub_argument
我正在尝试构建一个使用子解析器参数的脚本。但是,我不能将任何子参数作为参数传递。任何输入组合都会导致 "invalid choice:"。
示例输入:
python3 preprocess.py -d ../data/acm/ tf -l en
完整输出:
usage: preprocess.py [-h] [-k FOLDS] -d DATASETDIR [DATASETDIR ...] {tf} ...
preprocess.py: error: invalid choice: 'en' (choose from 'tf')
密码是
parser = argparse.ArgumentParser(description='Split input dataset into k folds of cross-validation.')
parser.add_argument('-k', '--folds', default=10, help='Number of folds for K fold cross-validation.', type=int)
required_args = parser.add_argument_group('required arguments')
required_args.add_argument('-d','--datasetdir', type=str, nargs='+', help='Dataset path (For more info: readme.txt)', required=True)
parser_subparsers = parser.add_subparsers(title="Representations", description="Choose the representations")
parser_tf = parser_subparsers.add_parser('tf', help='TF helper')
parser_tf.add_argument('-l', '--language', type=str, help='Language', default='en', choices=['en'])
parser_tf.add_argument('-s', '--stopword', type=bool, help='Skip stopwords', default=True)
args = parser.parse_args()
因为 --datasetdir
有 nargs="+"
其他参数被作为额外的数据集目录,而不是调用子解析器。
CLI 建议:将 datasetdir
更改为普通的旧位置参数,能够使用 os.pathsep
分隔路径。很难将 argparse 变成你想做的事情,并且使用带有 required=True
的可选参数首先是一种代码味道。
新界面将如下所示:
python3 preprocess.py ../data/acm/:/dir2:/dir3 tf -l en
我正在尝试构建一个使用子解析器参数的脚本。但是,我不能将任何子参数作为参数传递。任何输入组合都会导致 "invalid choice:"。
示例输入:
python3 preprocess.py -d ../data/acm/ tf -l en
完整输出:
usage: preprocess.py [-h] [-k FOLDS] -d DATASETDIR [DATASETDIR ...] {tf} ...
preprocess.py: error: invalid choice: 'en' (choose from 'tf')
密码是
parser = argparse.ArgumentParser(description='Split input dataset into k folds of cross-validation.')
parser.add_argument('-k', '--folds', default=10, help='Number of folds for K fold cross-validation.', type=int)
required_args = parser.add_argument_group('required arguments')
required_args.add_argument('-d','--datasetdir', type=str, nargs='+', help='Dataset path (For more info: readme.txt)', required=True)
parser_subparsers = parser.add_subparsers(title="Representations", description="Choose the representations")
parser_tf = parser_subparsers.add_parser('tf', help='TF helper')
parser_tf.add_argument('-l', '--language', type=str, help='Language', default='en', choices=['en'])
parser_tf.add_argument('-s', '--stopword', type=bool, help='Skip stopwords', default=True)
args = parser.parse_args()
因为 --datasetdir
有 nargs="+"
其他参数被作为额外的数据集目录,而不是调用子解析器。
CLI 建议:将 datasetdir
更改为普通的旧位置参数,能够使用 os.pathsep
分隔路径。很难将 argparse 变成你想做的事情,并且使用带有 required=True
的可选参数首先是一种代码味道。
新界面将如下所示:
python3 preprocess.py ../data/acm/:/dir2:/dir3 tf -l en