Хочу сохранить некоторые данные пользователя моей программы. Например, настройки программы, которые юзер укажет по-своему. Стоит ли использовать 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’])
[Configuration] game_path = 0 direct_path = 0 theme = Dark
Источник: ru.stackoverflow.com
Python — Использование JSON — хранение и использование данных
Эффективное хранение данных с помощью Feather в Python
CSV является одним из самых популярных форматов файлов для обмена данными. Это связано с тем, что он базируется на обычном тексте, поэтому может быть интерпретирован практически на любой системе любой программой.
Однако это тоже проблема, поскольку файл CSV занимает слишком много места, а процессы чтения и записи происходят медленно. Чтобы решить эту проблему и сделать обмен данными более эффективным, был разработан формат Feather.
Формат, разработанный на основе принципа максимально эффективного хранения данных в наборах данных (Data Frames). Этот формат также можно использовать в R или Julia. Что позволяет эффективно хранить данные.
Feather в Pandas
Как прочитать JSON-формат в Python?
Для чтения данных из JSON-объектов используются методы load и loads модуля json. Первый считывает файл в JSON-формате и возвращает python-объекты. Второй — отвечает за считывание строки в JSON-формате и тоже возвращает python-объекты
#метод load (обычное чтение json-файла)
with open(‘alco_json.json’) as file:
data = json.load(file)
print(type(data)) #класс — словарь
for section, commands in data.items():
print(section)
print(commands)
КАК ХРАНИТЬ КЛЮЧИ И ПАРОЛИ | Python 3, Питон 3
#метод loads (чтение json-строк)
with open(‘alco_json.json’) as file:
filedata = file.read()
print(type(filedata)) #класс — строка
object = json.loads(filedata)
print(type(object)) #класс — словарь
for section, commands in object.items():
print(section)
print(commands)
Как записать JSON-формат в Python?
Методы dump и dumps из модуля json помогают нам записать данные в формате json на Питоне. Dump сохраняет python-объект в файл .json. Dumps — возвращает строку в JSON-формате — например, для последующей ее передачи в API. Методы dump() и dumps() пользуются одними и теми же аргументами ключевых слов. Формат JSON может не совпадать с исходным python-форматом.
Например, кортежи при записи в JSON конвертируются в списки.
with open(‘alco_json.json’, ‘w’) as file:
file.write(json.dumps(jsonwrite))
with open(‘alco_json.json’) as file:
print(file.read())
jsonwrite = < #метод dump
«action»: «msg»,
«to»: «morisk»,
«from»: «me»,
«encoding»: «ascii»,
«message»: «Buy Whisky»
>
with open(‘alco_json.json’, ‘w’) as file:
json.dump(jsonwrite, file, sort_keys=True, indent=2)
with open(‘alco_json.json’) as file:
print(file.read())
Как преобразуются данные при сериализации JSON?
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
JSON | Python |
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
При использовании формата JSON есть ограничение: нет возможности сохранить словарь, где в качестве ключей — кортежи
Формат YAML
YAML («Ain’t Markup Language») — формат сериализации данных, который считают максимально user-friendly по синтаксису и удобству форматирования данных. Структура и синтаксис практически такой же, как на Python — используются отступы, сделанные с помощью пробелов (использовать tab нельзя). Список в YAML — структурирован.
При этом каждый элемент записывается в своей строке и маркируется символом «- » (обязательно с пробелом после него). Все строки набора должны иметь одинаковую величину отступа. Все эти же правила справедливы и для типа данных «словарь» (dict). В YAML так же могут быть комбинации элементов в словаре (dict) каждому ключу будет соответствовать набор элементов в виде списка (list)
# список с элементами (строки)
[‘action’, ‘to’, ‘from’, ‘encoding’, ‘message’]
# структурированный список
— action
— to
— from
— encoding
— message
# строки в словаре
# словарь в виде блока
‘action’: ‘msg’
‘to’: ‘account_name’
# спецсимволы в строках
command: «action | to»
# примеры комбинаций элементов
# словарь с элементами-списками
message:
— msg_1
— msg_2
— msg_3
to:
— account_1
— account_2
— account_3
# список словарей
— action: msg_1
to: account_1
— action: msg_2
to: account_2
Как считать YAML-формат?
Для работы с YAML, как и с другими типами данных, в Python заготовлен отдельный модуль — yaml
with open(‘alco_yaml_listdict.yaml’) as file:
data = yaml.load(file, Loader=yaml.FullLoader)
print(data)
Запись данных в .yaml-файл
Как записать обычный python-объект в .yaml-файл? Предположим, что нам нужен записать словарь с элементами в виде списка в формате YAML:
alco_list = [‘lawsons’,
‘captain morgan’,
‘bells’]
zapivon_list = [‘coca-cola’,
‘pepsi’,
‘not_zapivon’]
with open(‘coctail.yaml’, ‘w’) as file:
yaml.dump(importyaml, file, default_flow_style=False)
with open(‘coctail.yaml’) as f_n:
print(f_n.read())
Источник: digital2.ru