如何将PRAW获取的Reddit子版块信息存储到TXT文件?
解决Reddit用户Top5子版块写入TXT文件的类型错误问题
你碰到的TypeError: write() argument must be str, not Subreddit错误,根源是submission.subreddit返回的是PRAW库的Subreddit对象,不是字符串类型,而文件的write()方法只接受字符串参数。
下面是两种可行的修正方案:
方案1:将Subreddit对象转为字符串
直接用str()函数把Subreddit对象转换成字符串,再写入文件:
reddit = praw.Reddit( client_id="", client_secret="", password="", user_agent="", username="", ) # 用with语句自动处理文件关闭,更安全 with open('file.txt', 'w', encoding='utf-8') as f: for submission in reddit.redditor("").top(limit=5): # 转换为字符串后写入,每个子版块单独占一行 f.write(str(submission.subreddit) + '\n')
方案2:直接获取子版块名称属性
Subreddit对象自带display_name属性,直接取这个属性就能拿到子版块的名称字符串:
reddit = praw.Reddit( client_id="", client_secret="", password="", user_agent="", username="", ) with open('file.txt', 'w', encoding='utf-8') as f: for submission in reddit.redditor("").top(limit=5): # 写入子版块名称,每个占一行 f.write(submission.subreddit.display_name + '\n')
注意:推荐使用with语句操作文件,它会在代码块结束后自动关闭文件,避免手动关闭时可能出现的遗漏或异常问题。
内容的提问来源于stack exchange,提问作者Marcus White
相关产品推荐
相关产品推荐

