поэтому у меня есть этот код
# driver code
if __name__ == "__main__":
# parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument("InputDataFile", help="Enter the name of CSV file with .csv extention",type=str)
parser.add_argument("Weights", nargs=1, help="Enter the weight vector comma separated" ,type=str)
parser.add_argument("Impacts", nargs=1, help="Enter the impact vector comma separated",type=str)
args = parser.parse_args()
main(vars(args))
, и я хочу ввести строку вроде
python top2.py data.csv "0,1,1,1" "-,+,+,+"
, но я получаю ошибку ввода:
usage: top2.py [-h] InputDataFile Weights Impacts
top2.py: error: the following arguments are required: Impacts
код работает правильно, если первым символом входной строки является знак «+», где знак «-» находится между ними (как в «+, -, +»). Но если первый символ "-", я получаю вышеуказанную ошибку. Я предполагаю, что синтаксический анализатор использует дефис «-» в качестве начала другого флага и его аргументов.
Я не смог найти в Интернете никакого соответствующего материала, пожалуйста, помогите.
И это важно вводить строку указанным выше способом, поэтому нельзя изменить формат ввода.
edit: если я введу строку как «-, +, +, +» или добавлю пробелы в любом месте строки, он код работает нормально.