Python 在遍历urllib2.urlopen()返回的类似文件的对象时,只会遇到一行(尽管我知道还有更多)
我认为这是一个简单的数据类型问题,因此下一段是可选的,但可能有帮助的背景: 我将Mixpanel的导出方法用于pythonapi。我在这里下载了这个库,并一直在修改它,以便导出这里描述的原始事件数据。原始数据导出每行有一个json,每个json描述一个事件 这是Mixpanel对象的请求方法的定义。它所属的脚本初始化对象的实例,输入正确的凭据,并打印此方法的输出。基本上: 请求是一个类似文件的对象,每行都应该有一个json文档 我试图遍历这些JSON行,并将它们附加到名为data的列表中,然后返回它。 应该有很多台词,但我只收到一条Python 在遍历urllib2.urlopen()返回的类似文件的对象时,只会遇到一行(尽管我知道还有更多),python,json,urllib2,mixpanel,Python,Json,Urllib2,Mixpanel,我认为这是一个简单的数据类型问题,因此下一段是可选的,但可能有帮助的背景: 我将Mixpanel的导出方法用于pythonapi。我在这里下载了这个库,并一直在修改它,以便导出这里描述的原始事件数据。原始数据导出每行有一个json,每个json描述一个事件 这是Mixpanel对象的请求方法的定义。它所属的脚本初始化对象的实例,输入正确的凭据,并打印此方法的输出。基本上: 请求是一个类似文件的对象,每行都应该有一个json文档 我试图遍历这些JSON行,并将它们附加到名为data的列表中,然后返
您是否使用curl测试过相同的流/资源?我没有。看起来不太难,让我试一下,urllib2不处理分块编码;看见
def request(self, methods, params, format='json'):
"""
methods - List of methods to be joined, e.g. ['events', 'properties', 'values']
will give us http://mixpanel.com/api/2.0/events/properties/values/
params - Extra parameters associated with method
"""
params['api_key'] = self.api_key
params['expire'] = int(time.time()) + 600 # Grant this request 10 minutes.
params['format'] = format
if 'sig' in params: del params['sig']
params['sig'] = self.hash_args(params)
request_url = '/'.join([self.ENDPOINT, str(self.VERSION)] + methods) + '/?' + self.unicode_urlencode(params)
data = []
request = urllib2.urlopen(request_url, timeout=120) # this is a file-like object
# this block returns a list containing one json
for line in request:
data.append(json.loads(line))
return data