Когда я запускаю ваш код в блокноте, я получаю сообщение об ошибке использования argparse
:
usage: ipykernel_launcher.py [-h] [--name NAME]
ipykernel_launcher.py: error: unrecognized arguments: -f /run/user/1000/jupyter/kernel-a6504c0c-bed2-4405-8704-c008f52dcba6.json
С print(sys.argv)
я получаю
['/home/paul/.local/lib/python3.6/site-packages/ipykernel_launcher.py', '-f', '/run/user/1000/jupyter/kernel-a6504c0c-bed2-4405-8704-c008f52dcba6.json']
sys.argv
, который parser
анализирует, содержит значения, используемые для запуска сервера Notebook, который этот конкретный parser
не настроен для обработки.
parser.parse_known_args()
отображает:
(Namespace(name='foo'),
['-f',
'/run/user/1000/jupyter/kernel-a6504c0c-bed2-4405-8704-c008f52dcba6.json'])
Этот дополнительный материал, который не может обработать ваш анализатор, занесен в список extras
.
Запуск с пользовательским argv
список работает:
parser.parse_args(['-n', 'foobar'])
Namespace(name='foobar')
Хорошая идея поместить код argparse
(по крайней мере, строку parse_args
) в блок __main__
, поэтому он не запускается, когдаСкрипт импортирован.Он все равно будет работать, когда скрипт запускается как скрипт.
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description='Foo')
parser.add_argument('--name', '-n', default='foo', help='foo')
args = parser.parse_args()
print(args)
Этот скрипт также работает при использовании %run stack50763033.py
.Вы можете даже дать ему аргументы, как если бы вы использовали скрипт:
%run stack50763033.py -n testing
Я понятия не имею, какой код вызывает ошибку ключевого слова level
.Вы должны будете дать нам трассировку, если вам нужна помощь с этим.