1
辞書のリストをJSONファイルとして保存しようとしています。リストには変換が必要なdatetimeオブジェクトがあるので、リストをjson_data
変数に渡し、datetimeを文字列に変更して代わりに保存します。ここで変数を属性にコピーすると、属性が代わりに変更される
は、新しい辞書エントリを追加し、それを保存するために私のコードです:
TODAY = datetime.date.today()
class Deck():
def __init__(self):
self.cards = []
def add(self, question, answer):
'''Create a new card'''
card = {
'question': question,
'answer': answer,
'date_added': TODAY,
'review_date': TODAY,
}
self.cards.append(card)
def save(self):
'''Save cards'''
json_data = []
for card in self.cards:
json_data.append(card)
for data in json_data:
data['date_added'] = data['date_added'].isoformat()
data['review_date'] = data['review_date'].isoformat()
with open('cards.json', 'w') as obj:
json.dump(json_data, obj)
ファイルは大丈夫保存しますが、何らかの理由self.cards
のために代わりjson_data
の変更なっています。私はself.cardsのdatetimeオブジェクトをそのままにしておきたい。インスタンスがdeck
と呼ばれていると言う:なぜこれが起こっている
>>> deck.add('1 + 1',2)
>>> deck.cards[0]['date_added']
datetime.date(2017, 2, 12)
>>> deck.save()
>>> deck.cards[0]['date_added']
'2017-02-12'
>>> deck.save()
Traceback (most recent call last):
data['date_added'] = data['date_added'].isoformat()
AttributeError: 'str' object has no attribute 'isoformat'
わからない、私はいくつかの検索をしましたが、解決策を見つけることができませんでした。私は助けていただきありがとうございます。
エラーがタイトルと一致していません –