Как я сохраняю и восстанавливаю свой defstruct's в файл?

ввести ()?

>>> class A(object):
...    def whoami(self):
...       print type(self).__name__
...
>>>
>>> class B(A):
...    pass
...
>>>
>>>
>>> o = B()
>>> o.whoami()
'B'
>>>
6
задан 18 August 2009 в 04:12
поделиться

2 ответа

Ответ Тома Крейфорда близок, но используйте функцию «pr» вместо «print». «pr» производит строки, которые могут быть прочитаны с помощью «read».

(defn save-db [db filename]
  (spit 
   filename 
   (with-out-str (pr db))))

(defn load-db [filename] 
  (with-in-str (slurp filename)
    (read)))

Обратите внимание, что это не сработает, если * print-dup * имеет значение true. См. билет № 176 Обратите внимание, что когда вы читаете базу данных обратно, записи будут обычными картами, а не структурными картами. Карты структур пока не могут быть сериализованы с помощью pr / read.

8
ответ дан 10 December 2019 в 00:42
поделиться

Используйте spit and slurp (пример взят из http://www.nofluffjuststuff.com/blog / stuart_halloway / 2008/09 / pcl__clojure_chapter_3_1 ). Обычно этот метод называется сериализацией.

(defn save-db [db filename]
  (spit 
   filename 
   (with-out-str (pr db))))

(defn load-db [filename] 
  (with-in-str (slurp filename)
    (read)))

(Более ранняя ошибка печати была в исходном коде, и я был глуп и не проверял ее. Спасибо)

2
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: