我试图附加现有的JSON文件。当我覆盖整个JSON文件时,一切都很完美。我无法解决的问题是附加内容。我现在完全不知所措。
{
"hashlist": {
"QmVZATT8jWo6ncQM3kwBrGXBjuKfifvrE": {
"description": "Test Video",
"url": ""
},
"QmVqpEomPZU8cpNezxZHG2oc3xQi61P2n": {
"description": "Cat Photo",
"url": ""
},
"QmYdWb4CdFqWGYnPA7V12bX7hf2zxv64AG": {
"description": "test.co",
"url": ""
}
}
}%
以下是我使用的代码数据[' hashlist']。append(entry)接收AttributeError:' dict'对象没有属性'追加'
#!/usr/bin/python
import json
import os
data = []
if os.stat("hash.json").st_size != 0 :
file = open('hash.json', 'r')
data = json.load(file)
# print(data)
choice = raw_input("What do you want to do? \n a)Add a new IPFS hash\n s)Seach stored hashes\n >>")
if choice == 'a':
# Add a new hash.
description = raw_input('Enter hash description: ')
new_hash_val = raw_input('Enter IPFS hash: ')
new_url_val = raw_input('Enter URL: ')
entry = {new_hash_val: {'description': description, 'url': new_url_val}}
# search existing hash listings here
if new_hash_val not in data['hashlist']:
# append JSON file with new entry
# print entry
# data['hashlist'] = dict(entry) #overwrites whole JSON file
data['hashlist'].append(entry)
file = open('hash.json', 'w')
json.dump(data, file, sort_keys = True, indent = 4, ensure_ascii = False)
file.close()
print('IPFS Hash Added.')
pass
else:
print('Hash exist!')
答案 0 :(得分:4)
通常python错误都是不言自明的,这是一个很好的例子。 Python中的字典没有append方法。通过命名新键,值对或将带有键值对的iterable传递给dictionary.update(),有两种方法可以添加到词典中。在您的代码中,您可以这样做:
data['hashlist'][new_hash_val] = {'description': description, 'url': new_url_val}
或:
data['hashlist'].update({new_hash_val: {'description': description, 'url': new_url_val}})
第一个可能优于你想要做的事情,因为当你试图添加大量的关键值对时,第二个更有用。
您可以在Python here.
中阅读有关词典的更多信息