Я использую Python 3.6.8 :: Anaconda custom (64-bit) и получаю странные результаты от argparse. Несмотря на значение -x, значение trainandexecute = False
def get_parameters():
startup = '-x -b'
sys.argv = startup.split(' ')
ap = argparse.ArgumentParser()
ap.add_argument('-x', '--trainandexecute', action='store_true')
ap.add_argument('-b', '--debug', action='store_true')
ap.add_argument('-d', '--rundate', action='store')
print(ap.parse_args())
return vars(ap.parse_args())
get_parameters()
Возвращает следующий вывод. Обратите внимание, что trainandexecute = False, несмотря на флаг -x.
Namespace(debug=True, execute=False, train=False, trainandexecute=False)
{'train': False,
'execute': False,
'trainandexecute': False,
'debug': True}
Однако этот тест работает в следующей ячейке Jupyter, и это не моя среда:
def get_test_parameters():
startup = '-b -x'
sys.argv = startup.split(' ')
print(sys.argv)
ap = argparse.ArgumentParser()
ap.add_argument('-x', '--x', action='store_true')
ap.add_argument('-b', '--debug', action='store_true')
print(ap.parse_args())
return vars(ap.parse_args())
Итак, вывод:
get_test_parameters()
является:
['-b', '-x'] # print(sys.argv)
Namespace(debug=False, x=True) # print(ap.parse_args())
{'x': True, 'debug': False} # return vars(ap.parse_args())
У меня двойник ...