2016-02-12 16 views
4

Я искал способы добавления значений аргументов в сценарий, когда я запускаю его из командной строки. Эти два пакета, которые я обнаружил, похоже, это sys.argv и argparse.Python sys.argv и argparse

Я также хотел бы иметь возможность добавить какую-либо функцию помощи, если это возможно.

Может ли кто-нибудь объяснить разницу между этими двумя, и, возможно, что было бы проще для кого-то начать?

+1

'sys.argv' - это не пакет. Вы будете использовать 'argparse'. – vaultah

+1

'sys.argv' - список аргументов. 'argparse' - это пакет, который поможет вам справиться с аргументами (включая добавление аргумента' --help'). – khelwood

+1

'sys.argv' - это список строк, полученных из командной строки. 'argparse' позволяет вам создать парсер, который может декодировать' sys.argv'. Для простых случаев вы можете напрямую использовать 'sys.argv'. – hpaulj

ответ

9

sys.argv - это просто список аргументов командной строки.

argparse полнофункциональный анализатор командной строки, которые обычно разбираетsys.argv и дает Вам данные в гораздо проще в использовании моды.

Если вы делаете что-либо более сложное, чем скрипт, который принимает несколько обязательных позиционных аргументов, вы захотите использовать синтаксический анализатор. В зависимости от вашей версии python 3 доступны в стандартной библиотеке python (getopt, optparse и argparse) и argparse - это, безусловно, лучший вариант.

+0

Мне любопытно, getopt тот же getopt из модуля perl? – Seekheart

+0

@ Сикхейрт Более или менее. 'getopt' - стандартная библиотека POSIX для анализа параметров командной строки, а многие языки предоставляют оболочку или реализацию. Модуль Python в основном предназначен для упрощения переноса кода с других языков, которые его используют, а не для использования в новом коде. – chepner

+0

Это именно то, что я искал. Спасибо! –

2

Я бы порекомендовал вам использовать аргумент argparse для аргументов командной строки по двум причинам. Создание arg очень прямолинейно, как указано в документации, а во-вторых, потому что вы хотите, чтобы функция справки argparse предоставила вам ее бесплатно.

Документация: https://docs.python.org/2/howto/argparse.html

Позвольте мне знать, если вам нужна дополнительная помощь.

Смежные вопросы