Я пробовал это несколькими способами, и хотя я не могу поделиться спецификой своего проекта, я могу свести его к сути.
У меня есть что-то вроде ниже
import argparse,sys
parser = argparse.ArgumentParser()
parser.add_argument('password', help='The password')
parser.add_argument('--optionalArg', help='Just an optional arg')
args=parser.parse_args()
print(sys.argv[1])
При запуске этого с ПК с Windows 10 с установленным Python 3.6.x я получаю вывод, как показано ниже:
test.py test --optionalArg myArg
test --optionalArg myArg
Iдаже попробовал с примерами Argparse из Python напрямую и получил похожее поведение.
Теперь, по совпадению, на другой машине, также работающей под управлением Windows 10 и Python 3.6.x, все работает.Теперь они две минорные версии.
Я также видел еще один вопрос о SO (хотя и возникали проблемы с его поиском), предполагая, что в HKLR / Applications / python для обеспечения наличия «% *», что вообще заставило первый аргумент появляться на машине, гдеэто не работает.При этом я заметил, что эта запись вообще не существует на компьютере, на котором она работает.
Я понимаю, что это, скорее всего, проблема с реестром или что-то еще, касающееся установки.Я продолжаю расследование, чтобы выяснить, смогу ли я определить проблему.
Я буду обновлять здесь с любыми дополнительными вопросами.
РЕДАКТИРОВАТЬ:
Я сократил пример кода только до трех строк:
import sys
print(sys.argv[1])
print(sys.argv[:1])
все еще выводит следующее:
>argtest.py 1 2 3
1 2 3
['1 2 3']
на машине с вопросом.