Всем привет.
Есть такой код:
import os
from configparser import ConfigParser
config = ConfigParser()
path = "settings.ini"
def config_create():
"""
Создаём файл конфигурации
"""
config.add_section("id")
# Список доступных идентификаторов
config.set("id", "list", ','.join([str(x) for x in [0, 1]]))
with open(path, "w") as config_file:
config.write(config_file)
def config_read():
def settings_file_is_damaged():
# Удалить существующий конфиг. и создать новый
os.remove(path)
config_create()
config_read()
print("Файл настроек поврежден")
# Если файла нет: создаём
if not os.path.exists(path):
config_create()
# parse existing file
config.read(path)
# Читаем значения из конфиг. файла.
id_list = config.get("id", "list", fallback=None)
if id_list is None:
settings_file_is_damaged()
return
Содержимое settings.ini:
[id]
list = 0,1
Если изменить что нибудь в файле настроек:
[id]
listfhjfgjgfjbmnhg = 0,1
По идее, старый файл должен удалиться. Но почему то он не удаляется, и запись происходит в него. Почему так происходит?
MobiLike, Что то я мусолил мусолил твой код, так он и не заработал(вообще)
А проще почему нельзя написать?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
try:
import configparser
except ImportError:
import ConfigParser as configparser
config = configparser.ConfigParser()
path = "settings.ini"
def createConfig(path):
config = configparser.ConfigParser()
config.add_section("id")
config.set("id", "list", ','.join([str(x) for x in [0, 1]])) #config.set("id", "list", "0,1")
with open(path, "w") as config_file:
config.write(config_file)
if __name__ == "__main__":
createConfig(path)
kantry, Благодарю за помощь, в вопросе разобрался.
# MobiLike (24.02.2019 / 09:46)
Благодарю за помощь, в вопросе разобрался.
Как мне нравятся такие темы на различных форумах, просто жуть
Ну так напиши же, что там делал, как разобрался и какая причина была.
Вот заходит человек из поиска Google по похожему вопросу, что-то ищет, а ответ такой – всё, разобрался... и до свидания))
Sitego, Ok.
Создаём объект: config = ConfigParser()
потом читаем файл: config.read(path)
Видим, что в нем нет того что нам надо: if id_list is None:
Удаляем файл: os.remove(path)
И записываем в новый файл тот же самый объект в котором уже хранятся данные из предыдущего файла + новые "правильные" данные
Решение: пересоздать объект, или очистить
Удалять файл не обязательно, с этим справляется: open(path, "w")
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
from configparser import ConfigParser
config = ConfigParser()
path = "settings.ini"
def config_create():
config.clear() # config = ConfigParser()
config.add_section("id")
# Список доступных идентификаторов
config.set("id", "list", '0, 1')
# открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.
with open(path, "w") as f:
config.write(f)
def config_read():
# Если файла нет: создаём
if not os.path.exists(path):
config_create()
config.read(path)
# Читаем значения из конфиг. файла.
id_list = config.get("id", "list", fallback=None)
if id_list is None:
# Создать новый конфиг.
print("Файл настроек поврежден")
config_create()
config_read()
return
else:
print(id_list)
if __name__ == "__main__":
config_read()