Как сохранять данные Python?

Хочу сохранить некоторые данные пользователя моей программы. Например, настройки программы, которые юзер укажет по-своему.

Стоит ли использовать Json файлы? Или для простой программы есть какие-то другие способы?

Ну, например, хочу сохранить что-то подобное:

path = 'C:/Users/user'
theme = 'white'
sounds = True

Это для примера. Просто текстовый файл делать не хочу, и не совсем понимаю, как сохранить данные для программы

UPD:

По итогу у меня получилось что-то подобное, не знаю, насколько это верное решение, но у меня теперь всё работает:

Main.py

import configparser

GENERAL = {
    'config_file': 'config.ini'
}


configuration = {
    'Game_path': '',
    'Direct_path': '',
    'Theme': 'Light'
}


# Data write, Data read
# Path - choose data element
# obj - object to replace
# state - 'w'= write (replace data element)
def data(path=None, obj=None, state=None):
    config = configparser.ConfigParser()
    config.read(GENERAL['config_file'])
    if state == 'w':  # Change values in config.ini
        config[path[0]][path[1]] = obj

        with open(GENERAL['config_file'], state) as configfile:
        config.write(configfile)
    else:
        # Your code to read
        print(config['Configuration']['Theme'])

config.ini

[Configuration]
   game_path = 0
   direct_path = 0
   theme = Dark

Ответы (2 шт):

Автор решения: CrazyElf

JSON возможно наиболее удобен:

  • Понятный формат, близкий к словарю питона
  • Файл можно читать и редактировать "вручную" в любом редакторе
  • Легко сохранять и читать в коде программы на Python (да и на других языках)
import json

settings = {
    'path': 'C:/Users/user',
    'theme': 'white',
    'sounds': True,
}

with open('settings.json', 'w') as f:
    json.dump(settings, f)

with open('settings.json', 'r') as f:
    settings1 = json.load(f)

print(settings1['path'])

Вывод:

C:/Users/user

Сохранённый файл settings.json выглядит так:

{"path": "C:/Users/user", "theme": "white", "sounds": true}
→ Ссылка
Автор решения: eri

Исторический стандарт это ini файлы

ini файл поддерживает только строки насколько я знаю. числа, bool, datetime надо сериализовать, чтоб они загружались в свой тип. Не поддерживает вложенные словари и массивы.

json не годится для взаимодействия с пользователем. Он очень чувствителен к структуре. Хоть пользователи и технари, очень часто забывают запятую или поcтавят лишнюю. Много проблем с кавычками и экранированием строк.

Используйте toml или yaml как человечные альтернативы json.

>>> import toml
>>> data = dict(path = 'C:/Users/user',theme = 'white',sounds = True)
>>> print(toml.dumps(data))
path = "C:/Users/user"
theme = "white"
sounds = true

Работа с toml и yaml практически не отличается от json

import toml

settings = {
    'path': 'C:/Users/user',
    'theme': 'white',
    'sounds': True,
}

with open('settings.ini', 'w') as f:
    toml.dump(settings, f)

with open('settings.ini', 'r') as f:
    settings1 = toml.load(f)

print(settings1['path'])
→ Ссылка