Python: ConfigParcer – заглавные и прописные символы

Автор: | 01/10/2015
 

PythonПо умолчанию – ConfigParser меняет все ЗАГЛАВНЫЕ символы в строчные:

$ head ../secure/test.property
[Connection settings] jdbc.MAIN.url = besturlever.db.com

Теперь отредактируем с помощью скрипта из поста Python: модуль ConfigParser для работы с файлами конфигураций, и скрипт редактирования файлов:

$ ./setting.py -f "test.property" -s "Connection settings" -o "jdbc.MAIN.url" -v "otherurl.db.com"

Working on DEV and using configuration directory /home/user/secure.

Editing file: /home/user/secure/test.property. Will set section: Connection settings, option: jdbc.MAIN.url, value: otherurl.db.com.

New value assigned successfully.

Проверим:

$ head ../secure/test.property
[Connection settings] jdbc.main.url = url.db.com

Что бы изменить это – в файле /usr/lib64/python2.6/ConfigParser.py находим метод optionxform() класса RawConfigParser:

    def optionxform(self, optionstr):
        return optionstr.lower()

Он получает аргументом переданные опции, и возвращает их прописными символами, с помощью строкового метода lower().

Изменим метод:

    def optionxform(self, optionstr):
        return optionstr

Теперь всё работает как ожидалось:

$ ./setting.py -f "test.property" -s "Connection settings" -o "jdbc.MAIN.url" -v "newurl.db.com"

Working on DEV and using configuration directory /home/user/secure.

Editing file: /home/user/secure/test.property. Will set section: Connection settings, option: jdbc.MAIN.url, value: newurl.db.com.

New value assigned successfully.
$ head ../secure/test.property

[Connection settings]
jdbc.MAIN.url = newurl.db.com

Готово.