Я создал консольный скрипт, для работы с key-value хранилищем. Для того чтобы считать из него какое-то значение по ключу или добавить новое значение, я считываю его каждый раз его полностью. Это нормальная практика или стоит поступать иным образом?
Работает хранилище таким образом: при передаче --key --value создается значение для ключа(или добавляется, если ключ уже существует). При передаче --key выводятся значения ключа.
import os
import tempfile
import argparse
import json
import os
import tempfile
parser = argparse.ArgumentParser()
parser.add_argument('--key')
parser.add_argument('--value')
parser_args = parser.parse_args()
storage_path = os.path.join(tempfile.gettempdir(), 'storage.data')
try:
with open(storage_path, 'r') as f:
data = json.load(f)
except json.decoder.JSONDecodeError:
data = {}
with open(storage_path, 'w') as f:
json.dump(data, f)
except FileNotFoundError:
data = {}
with open(storage_path, 'w') as f:
json.dump(data, f)
if parser_args.value is None:
with open(storage_path, 'r') as f:
data = json.load(f)
try:
print(*data[parser_args.key], sep=', ')
except KeyError:
print(None)
if (parser_args.key is not None) and (parser_args.value is not None):
with open(storage_path, 'r') as f:
data_local = json.load(f)
with open(storage_path, 'w') as f:
try:
data_local[parser_args.key].append(parser_args.value)
except KeyError:
data_local[parser_args.key] = [parser_args.value]
json.dump(data_local, f, indent=4)
P.S как лучше писать: if smth is None или лучше писать if smth?