Python не получает более одного аргумента из командной строки - PullRequest
0 голосов
/ 22 сентября 2018

Я пробовал это несколькими способами, и хотя я не могу поделиться спецификой своего проекта, я могу свести его к сути.

У меня есть что-то вроде ниже

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'] 

на машине с вопросом.

1 Ответ

0 голосов
/ 27 сентября 2018

Хорошо, так что я понял это.

Как указал Эриксун в моих и других вопросах, .py в вашем реестре должен указывать на Python.File.(В частности, реестр компьютера \ HKEY_CLASSES_ROOT.py)

Теперь это нормально и здорово ... если все настроено правильно.Таким образом, пока мой указатель там (из всего, что я мог видеть) на проблемной машине, я обнаружил проблему в реестре, где у меня было «% » вместо просто%

Если я узналчто угодно, никогда не добавляйте то, что явно не указано в ответе, чтобы это не сработало.

...