У меня есть скрипт, сохраненный как 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, который мне не хватает или что-то в этом роде?