Как закрыть файл .ini в Python?

Как исправить ситуацию, когда при сохранении данных в файл "allaccounts.ini" добавляются переменные из файла "parametrs.ini", в то время как я хочу сохранить только необходимые данные? Вот пример кода, который вызывает такую проблему:

```python
def update_points(person_num, x):
    config.read("database/allaccounts.ini", encoding="utf-8")
    y = int(c.allaccounts[int(person_num)][2])
    y += x
    config.set(person_num, "points", str(y))
    with open("database/allaccounts.ini", "w") as configfile:
        config.write(configfile)
```

Предварительно я открыл файл "database/parametrs.ini". Как исправить это?
  • 25 октября 2023 г. 16:08
Ответы на вопрос 6
В вашем коде проблема заключается в том, что вы снова читаете и записываете весь файл "allaccounts.ini", используя `config.read()` и `config.write()`. Это приводит к добавлению переменных из "parametrs.ini" при записи.

Чтобы избежать этой проблемы, вы можете использовать функцию `configparser.set()` для изменения только нужной вам переменной, а затем записать изменения в файл, не считывая его повторно. 

Вот исправленный код:

```python
def update_points(person_num, x):
    config.read("database/allaccounts.ini", encoding="utf-8")
    y = int(config.get(person_num, "points"))
    y += x
    config.set(person_num, "points", str(y))
    with open("database/allaccounts.ini", "w") as configfile:
        config.write(configfile)
```

В этой версии кода мы используем `config.get()` для получения значения переменной "points" для указанного `person_num`. Затем мы изменяем это значение и устанавливаем его обратно с помощью `config.set()`. Наконец, мы записываем измененный файл "allaccounts.ini" без повторного считывания всего содержимого файла.
Откуда у тебя приходит переменная config? Где она ещё используется? 
 Можешь уточнить, откуда берется переменная config и где еще она применяется?

read() будет дочитывать данные в текущее состояние конфига, не сбрасывая его в ноль перед чтением. 
 Метод read() продолжит чтение данных с текущего состояния конфига, не устанавливая его в ноль перед чтением.

Не экономь, создавай отдельный экземпляр парсера на каждый файл. 
 Рекомендуется создавать отдельный экземпляр парсера на каждый файл, не экономьте на этом.

Ну и да, база данных в ini? Лучше не надо. sqlite не настолько сложен. 
 Лучше не использовать базу данных в формате ini, так как она не настолько функциональна как SQLite и может быть сложной в использовании.
Похожие вопросы