Примеры программирования командной строки Python, рецепты - PullRequest
3 голосов
/ 21 декабря 2010

В последнее время была потребность в утилитах командной строки python, и у меня нет опыта в написании клиентских программ. Несмотря на это, я все еще должен вытащить их.

Мое самое большое препятствие - структура этих программ. Кроме того, метод получения и проверки ввода от пользователя. Я получил очень длинные циклы while, и я просто не думаю, что это самый эффективный подход.

Может ли кто-нибудь предоставить ссылки на программы с открытым исходным кодом, которые я могу выбрать, чтобы получить некоторое понимание? Или книги, учебные пособия и т. Д., Которые я мог бы получить в свои руки. Я покопался, но безуспешно (наверное, мне не хватает моих навыков в Google).

Ответы [ 4 ]

5 голосов
/ 21 декабря 2010

Мне нравится пекарь .Вы используете это так:

% cat my.py
import baker


@baker.command
def cmd(start, end):
    print '%s %s' % (start, end)


if __name__ == '__main__':
    baker.run()

% python my.py cmd 2010-12-01 2010-12-31
2010-12-01 2010-12-31
4 голосов
/ 21 декабря 2010

Случайные подсказки:

  • модуль optionparser хорош для анализа сложных опций
  • Многие модули Python действительно являются программами Cli. Смотрите там (например, смотрите python2.6/json/tool.py, который вы можете запустить с python -m json.tool)

Хорошая идея использовать

 def main(arguments):
     etc.

 if __name__ == '__main__':
     # only if we are executed rather than imported as a module:
     import sys
     main(sys.argv)

Так, что части вашего приложения могут быть повторно использованы просто import их

0 голосов
/ 21 декабря 2010

Если вы можете использовать python 2.7 или 3 или ожидать наличия общей среды, из которой он может быть доступен, рассмотрите argparse вместо optparse.Он дает вам тот же контроль, что и optparse для опций с аргументами.

Лично я не против поместить весь анализ в блок if __name__ == '__main__', если это довольно просто.

В вашем комментариив ответ Фалмарри вы упомянули об активном взаимодействии с пользователем во время использования вашей программы CLI - для меня это начинает переходить к «строковому интерпретатору команд», например cmd в стандартной библиотеке или превосходному cmd2 .Цикл по строкам, которые отличаются от обработанных вручную raw_input, копирует некоторые функции, которые вы можете получить с помощью одной из них.Мне также было бы интересно увидеть хорошие примеры того, что вы описываете.

0 голосов
/ 21 декабря 2010

Практически любой скрипт на python может быть «программой командной строки».Какой конкретный вопрос у вас есть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...