AttributeError:'dict'对象没有属性'append'试图写入.JSON文件

时间:2019-04-17 04:39:44

标签: python python-3.x

我有一个脚本试图在其中写入名为Alertd_comments.json的.JSON文件。 我可以在Windows上使用它,但是当我将其移至Ubuntu时,标题出现错误。 我对此很陌生,有点卡住。我知道这是列表和字典的问题,但我无法弄清楚。任何帮助将不胜感激

我正在Ubuntu上使用python 3.6。

我当前与此问题有关的代码。

with open(save_path, 'r') as fp:
    alerted_comments = json.load(fp)

for comment in comment_stream:
    if comment.id in alerted_comments:
        continue

    if comment.author:  # if comment author hasn't deleted
        if comment.author.name in ignore_users:
            continue

    alerted_comments.append(comment.id)

    if len(alerted_comments) > 100:
         alerted_comments = alerted_comments[-100:]

         with open(save_path, 'w') as fp:
             json.dump(alerted_comments, fp)
        else:
             # You'll probably want to be more discerning than "not 200",
             # but that's fine for now.
             raise SlackError('Request to Slack returned an error %s, the response is:\n%s' % (response.status_code, response.text))

if __name__ == '__main__':
    while True:
        try:
            main(save_path='alerted_comments.json')
        except Exception as e:
            print('There was an error: {}'.format(str(e)))
            time.sleep(60)  # wait for 60 seconds before restarting

这意味着要发生的事情是,脚本读取了一个关键字,然后将该关键字的注释ID放入Alerted_comments.json中,以便它记住并且不再重复相同的关键字。

1 个答案:

答案 0 :(得分:0)

从错误中我们可以发现,在假设dict的情况下,我们正在使用list实例,因此问题出在传递的JSON或我们对其结构的假设中。

conversation可以清楚地看到初始JSON具有

{}

空对象字面量在其内容中用dict反序列化后变成Python json.load,因此如果它应该是一个空数组,我们可以将内容替换为

[]