Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 9, 2014 21:16:00

Kristow
Зарегистрирован: 2014-06-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2 чтение\запись параметра в файл

Всем привет!
Мне необходимо читать файл ini, т.е. конкретные параметры, а потом сохранять измененные значения полученных параметров в файл ini обратно…
Я нашел хорошее решение чтения файла вот такого содержания:
PIN::0000:IN-код
APN::internet.mts.ru::Точка входа GPRS
GPRS_USER::mts::Имя пользователя GPRS
GPRS_PASSWD::mts::Пароль GPRS
класс который умеет работать с этим конфигом:

class Config:
    def __init__(self):
        self.config = {}
        
    def get(self, k):
        return self.config[k]
    
    def set(self, k, v):
        self.config[k] = v
        
    def read(self):
        try:
            fh = open("settings.ini", "r")
            try:
                lines = fh.readlines()
                for l in lines:
                    kv = l.strip().split('::')
                    self.config[kv[0]] = kv[1]
            finally:
                fh.close()
        except IOError:
            print "Configuration file not found."
    def write(self):
        try:
            fh = open("settings.ini", "w")
            try:
                lines = []
                for k in self.config.keys():
                    lines.append(k + '::' + self.config[k] + '\n')
                fh.writelines(lines)
            finally:
                fh.close()
        except IOError:
            print "Configuration file not found."
        
    def dump(self):
        for k in self.config.keys():
            print k + "::" + self.config[k]
        
для того чтобы прочитать какой-либо параметр я использую
import config CONFIG = config.Config() CONFIG.read() pin = CONFIG.get('PIN') я получаю pin = 0000.
А как сделать запись этого же параметра, но измененного, не пойму. Помогите плиз.

Отредактировано Kristow (Июнь 9, 2014 21:22:03)

Офлайн

#2 Июнь 9, 2014 22:14:08

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

python 2 чтение\запись параметра в файл

насколько я понял вы получаете в результате пары значений

{"PIN":"0000","APN":"internet.mts.ru"...}
При хранении данных в словаре вам не удастся сохранить порядок ключей.
Сохранить данные словаря можно так:
a={"PIN":"0000","APN":"internet.mts.ru"}
with open("a.cfg","w") as f:
      f.write("\n".join(["::".join([i,a[i]]) for i in a]))
Если допустимо влиять на формат файла, то лучше будет использовать json или yaml ну и на худой конец configparser (https://docs.python.org/2/library/configparser.html)



Отредактировано doza_and (Июнь 10, 2014 22:19:36)

Офлайн

#3 Июнь 10, 2014 12:31:16

Kristow
Зарегистрирован: 2014-06-09
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2 чтение\запись параметра в файл

Спасибо doza_and!
Разобрался.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version