Python - удалить файл настроек

535
.
MobiLike
Всем привет.
Есть такой код:
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


По идее, старый файл должен удалиться. Но почему то он не удаляется, и запись происходит в него. Почему так происходит?
.
Hey guys! Finally I'm gonna change status!?
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, Благодарю за помощь, в вопросе разобрался.
.
Enter нажат, к чему теперь рыданья…
# 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()
Всего: 5