Найти - Пользователи
Полная версия: Помогите советом новичку!!! Проблема с tempfile и argparse
Начало » Центр помощи » Помогите советом новичку!!! Проблема с tempfile и argparse
1
Babbl_Boy
Всем доброго вечера. Прохожу курс на Coursera и при выполнении одного из заданий столкнулся с проблемой, решить которую корректно не получается уже вот второй день.
Загружаю ключ-значение в файл .json. Записывается и читается. Однако при повторном вызове функции , значения просто перезаписываются.. Необходимо создать мини базу в json и обязательно с использованием созданного файла. И потом при каждом вызове файла передавать новые значения и они бы записывались . Звучит совсем не сложно, но проблема в том, что все перезаписывается…
Вот собственно код:

import json,os,tempfile,argparse
data = list()
storage_path = os.path.join(tempfile.gettempdir(), ‘storage.data’)
value = argparse.ArgumentParser()
value.add_argument('-k','–key')
value.add_argument('-v', ‘–val’)
storage = value.parse_args()


def join():
data1 = dict()
data.append(data1)
with open(storage_path,'w') as f:
f.write(str(data))
json.dump(data, open('storage.data', ‘w’))
print(json.load(open('storage.data', ‘r’)))


join()

Romissevd
Тут почитай за режимы…
Babbl_Boy
Объясни поподробней пожалуйста.. я уже читал и не 1 раз
Romissevd
'w'- открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.
'a' - открытие на дозапись, информация добавляется в конец файла.
Babbl_Boy
Если вместо ‘w’ поставить ‘a’ выдает вот такая ошибка
Romissevd
'w'- открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.'a' - открытие на дозапись, информация добавляется в конец файла.
Если так сделать , Выдается ошибка
Rodegast
 >>> import simplejson as jsp
>>> data = {1:1, 2:2, 3:3}
>>> jsp.dump(data, open("/home/rodegast/baza.json", "w"))
>>> data = jsp.load(open("/home/rodegast/baza.json"))
>>> data
{'1': 1, '3': 3, '2': 2}
>>> data.update({4:4})
>>> jsp.dump(data, open("/home/rodegast/baza.json", "w"))
Убери f.write(str(data)) тогда он перезаписывать не будет.
Babbl_Boy
Rodegast
убрал, не помогает
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB