使用PRAW调用Subreddit排序函数时传入timeFilter参数报错排查
问题原因及解决办法
核心问题有两个:
- 参数名拼写错误:PRAW的排序方法中,时间过滤器的参数名是
time_filter(下划线分隔),不是你写的timeFilter(驼峰式),这是触发报错的直接原因。 - 并非所有排序函数都支持时间过滤器:只有
top和controversial这两个排序方法接受time_filter参数,像你当前用的hot(sortingType=0)、new、rising这些方法本身就没有这个参数,强行传入也会报错。
修正后的代码示例:
sortingType = 0 timeFilterId = 0 sortingFunctionTypes = { 0 : 'hot', 1 : 'top', 2 : 'new', 3 : 'rising', 4 : 'controversial' } timeFilters = { 0 : "all", 1 : "day", 2 : "hour", 3 : "month", 4 : "week", 5 : "year" } subreddit = self.reddit.subreddit(redditString) sortingFunction = getattr(subreddit, sortingFunctionTypes.get(sortingType)) # 先构建基础参数,再根据排序类型决定是否添加time_filter request_kwargs = {'limit': postLimit} # 只有top(1)和controversial(4)支持time_filter if sortingType in (1, 4): request_kwargs['time_filter'] = timeFilters.get(timeFilterId) self.posts = sortingFunction(**request_kwargs)
内容的提问来源于stack exchange,提问作者Gab Tro
相关产品推荐
相关产品推荐

