Аргументы путаются с argparse

#python #argparse #getopt

Вопрос:

 def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument('p', 'projectType', type=str, help = 'c or c   project type', choices=['c', 'c  ']) 
parser.add_argument('i', 'inputfile', type=pathlib.Path, help = 'the input file path')
parser.add_argument('o',"outputfile",type=pathlib.Path, help= 'the output file path')
parser.add_argument
args = parser.parse_args()
 

когда я запускаю этот код в командной строке и сначала ввожу файл ввода, например.. это выдает ошибку. есть ли у Argparse такая опция, как getopt (где я называю что-то буквой перед ее вводом, чтобы не перепутать, например, » — я …ввод…»). Здесь этот параметр предназначен только для необязательных аргументов.

Есть ли способ для позиционных аргументов сделать это?

Комментарии:

1. Покажите нам фактическую командную строку, которая выдает ошибку (например, «файл ввода первым» совершенно неясен). Затем покажите нам, в чем ошибка («это выдает мне ошибку» непонятно). Затем объясните, какую командную строку вы ожидаете, что ваш анализатор примет.

2. вы хотите optional прочитать документы. Также перечитайте, что там говорится о type параметре.

Ответ №1:

В соответствии с документацией argparse вы бы определили его как «необязательный» аргумент, но с required флагом, установленным в true, например:

 parser.add_argument('-i', '--inputfile', required=True, type=pathlib.Path, help='the input file path')