Добра всем! Недавно начал учить Python для общего развития и сейчас прохожу курсы. Столкнулся с проблемой при решении задачки.
Нужно через консоль передать параметры Ключ:Значение и сохранить их в файле. Далее при обнаружении ключа дополнить коллекцию значений. Записать и получить значения получается а вот при попытке дополнить выпадает ошибка.
AttributeError: 'str' object has no attribute 'append'
при всём этом аналогичная запись работает в Jupyter:
list = [1,2,{"key": 15}]
list[2]['key'].append(6)
import os
import tempfile
import sys
import argparse
import json
parser = argparse.ArgumentParser("Key-Value хранилище.")
parser.add_argument("key_name", type=str, help="Ввод имя ключа")
parser.add_argument('-v',"--val", type=str, help="Ввод значения ключа")
args = parser.parse_args()
storage_path = os.path.join(tempfile.gettempdir(), 'storage.data')
def file_write(key, val):
try:
data = json.load(open(storage_path))
except:
data = []
print(type(data))
if len(data) != 0:
for i in range(len(data)):
if key in data[i]:
data[i][key].append(val)
else:
add_dict = {key:val}
data.append(add_dict)
with open(storage_path, "w") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
def file_read(key):
with open(storage_path, "r"):
data = json.load(open(storage_path))
for i in range(len(data)):
if key in data[i]:
print(data[i][key])
if args.val != None:
file_write(args.key_name, args.val)
else:
file_read(args.key_name)