По умолчанию —
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
Готово.