'set' object 没有属性 'get' CSV (in praw)

'set' object has no attribute 'get' CSV (in praw)

此代码应该获取有关 post 的一些信息,例如标题、赞成票等。然后将其写入 CSV 文件。但是什么时候 运行 我得到这个错误:

Traceback (most recent call last):
  File "main.py", line 71, in <module>
    writer.writerow(data)
  File "/usr/lib/python3.8/csv.py", line 154, in writerow
    return self.writer.writerow(self._dict_to_list(rowdict))
  File "/usr/lib/python3.8/csv.py", line 151, in <genexpr>
    return (rowdict.get(key, self.restval) for key in self.fieldnames)
AttributeError: 'set' object has no attribute 'get'

这是代码:

    import praw
    import random
    import time
    import csv
    #from keep_Aliv import keep_alive
    
    username = "XXXXXX"
    
    #keep_alive()
    
    print('AAAAAAA')
    
    reddit = praw.Reddit(client_id="XXXXXX",
                         client_secret="XXXXXX",
                         user_agent="bot",
                         username=username,
                         password='XXXXXX')
    
    
    subreddit = reddit.subreddit('all')
    
   with open('pdata.csv', 'a') as f:
    headers = [
        'ID', 'Date_utc', 'Upvotes', 'Number of Comments', 'Subthread name'
    ]
    writer = csv.DictWriter(f,
                            fieldnames=headers,
                            extrasaction='ignore',
                            dialect='excel')
    writer.writeheader()
    for post in subreddit.stream.submissions():
        #print(post.title)
        
        data = {
                "ID": post.id,
                "Date_utc": post.created_utc,
                "Upvotes": post.ups,
                "Number of comments": post.num_comments,
                "Subthread name": post.title,
                }
        writer.writerow(data)
        print(data)

好的,我该如何解决这个问题?请告知是否需要其他信息。

谢谢:)

(主要问题现已解决,编译器现在不会抛出错误,但另一方面,程序不会在 csv 文件中写入任何内容。编译器未检测到任何错误,但它仍然没有做它应该做的事情。我该如何解决这个问题?顺便说一下 post 工作代码中的代码)

您正在使用接受口述的口述书写器。您正在向它传递一个字符串。

你应该构造一个字典,然后写下:

data = {
    "ID": post,
    "Date_utc": post.created_utc,
    "Upvotes": post.ups,
    "Number of comments": post.num_comments,
    "Subthread name": post.title,
}
writer.writerow(data)

有关如何使用 dictwriter 的更多信息,您可以访问此处:https://www.programiz.com/python-programming/writing-csv-files

data 格式似乎不正确:

尝试以下操作:

data = {
    'ID' : post, 
    'Date_utc' : post.created_utc, 
    'Upvotes' : post.ups,
    'Number of comments' : post.num_comments,
    'Subthread name' : post.title
}

注意:当使用 dictwriter 时,您还应该使用 newline 参数打开文件,如下所示:

with open('pdata.csv', 'a', newline='') as f:

这避免了在输出中出现额外的换行符。