| Интеграция конфигурационных файлов |
|
Интеграция конфигурационных файлов в инструменты командной строки имеет особую важность для повышения простоты использования и выполнения дополнительных настроек в будущем. На первый взгляд разговоры об удобстве использования инструментов командной строки кажутся немного странными, потому что обычно эта тема рассматривается только относительно приложений с графическим интерфейсом или веб-приложений. Это несправедливо, потому что инструменты командной строки заслуживают такого же внимательного отношения к простоте и удобству использования, какое уделяется при создании приложений с графическим интерфейсом. Конфигурационный файл может также быть полезным средством для централизованного управления инструментом командной строки, запускаемым на разных машинах. Доступ к разделяемому конфигурационному файлу можно обеспечить средствами NFS, после чего сотни машин могли бы считывать его из универсального инструмента командной строки, созданного вами. С другой стороны, у вас может иметься своя система управления настройками, которая также могла бы использоваться для передачи конфигурационных файлов инструментам, созданным вами. В состав стандартной библиотеки языка Python входит замечательный модуль ConfigParser, предназначенный для чтения и записи конфигурационных файлов, использующий синтаксис ini-файлов. Оказывается, формат .ini является прекрасным способом хранения простых конфигурационных данных, не требующим от человека, вbinолняющего редактирование файла, использования XML и знаний языка Python. Следует иметь в виду, что порядок следования записей в конфигурационном файле не имеет значения. Для представления содержимого конфигурационного файла модуль ConfigParser использует словарь, и вы должны будете обращаться к нему соответствующим образом, чтобы получить корректное отображение. Прежде чем приступить к интегрированию конфигурационных файлов в инструмент командной строки, мы создадим конфигурационный файл «hello world». Создайте файл с именем hello _ config . ini и добавьте в него следующие строки:
Теперь, когда у нас имеется простейший конфигурационный файл, мы можем приступить к интегрированию этого файла в наш предыдущий пример инструмента командной строки «Hello World», как показано в примере 13.13. Пример 13.13. Инструмент командной строки с поддержкой конфигурационного файла
Если теперь запустить этот инструмент без каких-либо параметров, мы получим значение по умолчанию BOFH, как и в оригинальной версии программы «Hello World»:
Однако, если указать параметр --config, сценарий прочитает содержимое конфигурационного файла и даст такой ответ:
В большинстве случаев вполне достаточно будет для параметра --config использовать путь к файлу по умолчанию, но позволить при этом прямо указывать местоположение конфигурационного файла. Для этого вместо определения действия store_true можно сделать следующее:
Если бы это была более крупная и полезная программа, мы могли бы передать ее любому пользователю, даже не знающему языка Python. Реализованный подход позволил бы ему настраивать поведение программы, изменяя значение в строке phrase=Config, без необходимости касаться программного кода. Даже если пользователь обладает знанием языка Python, он будет избавлен от ввода в командной строке одних и тех же параметров снова и снова, и при этом сохранится гибкость инструмента. Модули optparse и ConfigParser, входящие в состав стандартной библиотеки языка Python, очень просты в работе и давно уже включены в библиотеку, поэтому они должны быть доступны в большинстве систем, с которыми вам придется сталкиваться. Если вам потребуется написать множество инструментов командной строки, то есть смысл исследовать дополнительные возможности модуля optparse, такие как функции обратного вызова и расширение самого модуля optparse. Вам также могут пригодиться несколько взаимосвязанных модулей, которые отсутствуют в стандартной библиотеке, такие как: CommandLine-Арр ( http:// www. doughellmann. com/ projects/ CommandLineApp/), Arg-parse ( http:// pypi. python. org/ pypi/ argparse) и ConfigObj ( http:// pypi. py- thon. org/ pypi/ ConfigObj).
Related Articles
Set as favorite
Bookmark
Email This
Hits: 243 Комментарии (0)RSS feed CommentsНаписать комментарий |