YAY! другая версия
На основании этого ответа (при добавлении используется оператор dict
, with
и поддерживается символ %
)
import ConfigParser
import StringIO
import os
def read_properties_file(file_path):
with open(file_path) as f:
config = StringIO.StringIO()
config.write('[dummy_section]\n')
config.write(f.read().replace('%', '%%'))
config.seek(0, os.SEEK_SET)
cp = ConfigParser.SafeConfigParser()
cp.readfp(config)
return dict(cp.items('dummy_section'))
Использование
props = read_properties_file('/tmp/database.properties')
# It will raise if `name` is not in the properties file
name = props['name']
# And if you deal with optional settings, use:
connection_string = props.get('connection-string')
password = props.get('password')
print name, connection_string, password
файл .properties
, используемый в моем примере
name=mongo
connection-string=mongodb://...
password=my-password%1234
Редактировать 2015-11-06
Благодаря Нилу Лайме , который упомянул, что была проблема с символом %
.
Причиной этого является ConfigParser
, предназначенный для анализа .ini
файлов. Символ %
- это специальный синтаксис. чтобы использовать символ %
, просто добавили замену %
на %%
в соответствии с синтаксисом .ini
.