Ошибка argparse с разбором необходимых аргументов - PullRequest
0 голосов
/ 06 марта 2019

У меня есть скрипт, сохраненный как workspace.py

import argparse
import os

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('title', type=str, help="Will be displayed as the title")
    parser.add_argument('-f', '--folder', help='Point to the folder you want to read from (defaults to current folder in command prompt)', type=str, default=os.getcwd())
    args = parser.parse_args()
    print(args)
    someFunction(args.folder, args.title)

На который я звоню с терминала:

workspace.py myTitle

В результате ошибки

workspace.py: ошибка: требуются следующие аргументы: title

Понятия не имею, почему это происходит, потому что я поставляю «myTitle» в терминал Если я указываю default= для аргумента title, он прекрасно работает с этим значением. Часть, которая бросает меня в том, что она даже не доходит до print(args), поэтому я не могу понять, что программа думает о чем, но вместо этого происходит сбой при args = parser.parse_args()

Я попытался повторить точный пример по адресу: https://docs.python.org/2/howto/argparse.html#introducing-positional-arguments (скопировано ниже)

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print args.echo

Запуск

workspace.py hello

Результаты (после добавления круглых скобок в печать для 3.X)

workspace.py: ошибка: требуются следующие аргументы: echo

Есть что-то, что я пропускаю? Почему это не просто напечатать "привет"? Есть какой-то специфический синтаксис Python 3, который мне не хватает или что-то в этом роде?

1 Ответ

0 голосов
/ 11 марта 2019

Я заставил его работать, если я запускаю python workspace.py someString вместо workspace.py someString. Я не понимаю, почему эта версия работает, так как командная строка, очевидно, распознает его как Python и работает правильно до args = parser.parse_args(). Не было ошибок как 'workspace.py' is not recognized as an internal or external command, operable program or batch file. Также не было проблем с импортом модулей. Рассмотрите следующий сеанс командной строки, если вы столкнулись с подобной ошибкой. Может быть, вам просто нужно будет включить python в свои команды, как я должен ...

C:\Users\rparkhurst\PycharmProjects\Workspace>workspace.py MyTitle
usage: workspace.py [-h] [-f FOLDER] title
workspace.py: error: the following arguments are required: title

C:\Users\rparkhurst\PycharmProjects\Workspace>python workspace.py MyTitle
Namespace(folder='C:\\Users\\rparkhurst\\PycharmProjects\\Workspace', title='MyTitle')
...