Python PRAW:get_提交工作不一致

Python PRAW:get_提交工作不一致,python,python-3.x,reddit,praw,Python,Python 3.x,Reddit,Praw,脚本从Reddit上的特定注释中获取信息。 它是否有效取决于给定的永久链接 import praw from pprint import pprint clipboard = ['permalink'] com = r.get_submission(clipboard).comments[0] pprint(vars(com)) 此permalink的工作原理是: 这个没有: 我觉得以?context=3结尾的permalinks或其他不寻常的结尾有一些特殊的特性,这些特性会破坏.get\u提

脚本从Reddit上的特定注释中获取信息。 它是否有效取决于给定的永久链接

import praw
from pprint import pprint
clipboard = ['permalink']
com = r.get_submission(clipboard).comments[0]
pprint(vars(com))
此permalink的工作原理是:

这个没有:

我觉得以?context=3结尾的permalinks或其他不寻常的结尾有一些特殊的特性,这些特性会破坏.get\u提交

以下是错误报告:

Traceback (most recent call last):
  File "C:\Users\Aymeric\Python33\Scripts\brdg\brdg.py", line 14, in <module>
    com = r.get_submission(clipboard).comments[0]
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\__init__.py", line 875, in get_submission
    comment_sort=comment_sort)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\decorators.py", line 320, in wrapped
    return function(cls, *args, **kwargs)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\objects.py", line 837, in from_url
    s_info, c_info = reddit_session.request_json(url, params=params)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\decorators.py", line 158, in wrapped
    return_value = function(reddit_session, *args, **kwargs)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\__init__.py", line 476, in request_json
    response = self._request(url, params, data)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\__init__.py", line 338, in _request
    cache_key = (normalize_url(request.url), tuple(key_items))
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\helpers.py", line 140, in normalize_url
    if url.endswith('.json'):
AttributeError: 'list' object has no attribute 'endswith'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Aymeric\Python33\Scripts\brdg\brdg.py”,第14行,在
com=r.get_提交(剪贴板)。注释[0]
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\\uuuuu init\uuuuuu.py”,第875行,在get_提交中
注释\排序=注释\排序)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\decorators.py”,第320行,包装为
返回函数(cls、*args、**kwargs)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\objects.py”,第837行,在from\u url中
s_info,c_info=reddit_session.request_json(url,params=params)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\decorators.py”,第158行,包装为
return_value=函数(reddit_会话,*args,**kwargs)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\\uuuu init\uuuuu.py”,第476行,在request\u json中
响应=self.\u请求(url、参数、数据)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\\uuuuu init\uuuuuuuuu.py”,第338行,在请求中
cache\u key=(规范化\u url(request.url)、元组(key\u项))
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\helpers.py”,第140行,在normalize\u url中
如果url.endswith('.json'):
AttributeError:“list”对象没有属性“endswith”
编辑:以下是我将列表更改为字符串时得到的结果:

Traceback (most recent call last):
  File "C:\Users\Aymeric\Python33\lib\json\decoder.py", line 368, in raw_decode
    obj, end = self.scan_once(s, idx)
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Aymeric\Python33\Scripts\brdg\brdg.py", line 14, in <module>
    com = r.get_submission(clipboard).comments[0]
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\__init__.py", line 875, in get_submission
    comment_sort=comment_sort)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\decorators.py", line 320, in wrapped
    return function(cls, *args, **kwargs)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\objects.py", line 837, in from_url
    s_info, c_info = reddit_session.request_json(url, params=params)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\decorators.py", line 158, in wrapped
    return_value = function(reddit_session, *args, **kwargs)
  File "C:\Users\Aymeric\Python33\lib\site-packages\praw\__init__.py", line 483, in request_json
    data = json.loads(response, object_hook=hook)
  File "C:\Users\Aymeric\Python33\lib\json\__init__.py", line 332, in loads
    return cls(**kw).decode(s)
  File "C:\Users\Aymeric\Python33\lib\json\decoder.py", line 352, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Aymeric\Python33\lib\json\decoder.py", line 370, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
回溯(最近一次呼叫最后一次):
文件“C:\Users\Aymeric\Python33\lib\json\decoder.py”,第368行,原始解码
obj,end=self.scan_一次(s,idx)
停止迭代
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“C:\Users\Aymeric\Python33\Scripts\brdg\brdg.py”,第14行,在
com=r.get_提交(剪贴板)。注释[0]
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\\uuuuu init\uuuuuu.py”,第875行,在get_提交中
注释\排序=注释\排序)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\decorators.py”,第320行,包装为
返回函数(cls、*args、**kwargs)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\objects.py”,第837行,在from\u url中
s_info,c_info=reddit_session.request_json(url,params=params)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\decorators.py”,第158行,包装为
return_value=函数(reddit_会话,*args,**kwargs)
文件“C:\Users\Aymeric\Python33\lib\site packages\praw\\uuuuu init\uuuuuu.py”,第483行,在request\u json中
data=json.loads(响应,object\u hook=hook)
文件“C:\Users\Aymeric\Python33\lib\json\\uuuu init\uuuu.py”,第332行,加载
返回cls(**kw)。解码
文件“C:\Users\Aymeric\Python33\lib\json\decoder.py”,第352行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“C:\Users\Aymeric\Python33\lib\json\decoder.py”,第370行,原始解码
raise VALUERROR(“无法解码JSON对象”)
ValueError:无法解码任何JSON对象

Edit2:如果我删除?context=3并将列表更改为字符串,现在就可以工作了。显然,它从来没有作为一个列表工作过(我的坏记忆在那里!),而且?context=3似乎是个问题。

你说得对
?context=3
,答案很简单,PRAW在你提问时不支持url参数。现在在PRAW 2.1.13或更高版本中会出现这种情况。使用
pip安装PRAW-U
升级您的PRAW版本


您认为
get\u submission
将列表作为参数,可能是因为将其与方法混淆,后者确实将iterable作为参数。

错误是,您试图使用列表调用
endswith()
函数。这是一个字符串函数。但为什么它可以与其他链接一起工作,仍然作为列表?当我将链接更改为字符串时,会收到另一个错误报告,我将在OP中编辑它。这可能是模块的一个错误。如果var[-1]==val:我不明白您要我更改什么,请不要尝试
var.endswith(val)
。另外,在完整的脚本get_submission中有一个字符串作为参数,我想它在这里工作是因为列表只有一个元素?显然我错了,我的第一个回答是:它似乎对列表根本不起作用。我不知道我是怎么想的。