当迭代urllib2.urlopen()返回的类文件对象时,只会遇到一行(尽管我知道还有更多)

2024-06-08 02:36:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为这是一个简单的数据类型问题,因此下一段是可选的,但可能有帮助的背景:

我将Mixpanel的Export方法与Python API一起使用。我在这里下载了这个库(https://mixpanel.com/site_media/api/v2/mixpanel.py),并一直在修改它以用于这里描述的原始事件数据导出(https://mixpanel.com/docs/api-documentation/exporting-raw-data-you-inserted-into-mixpanel)。原始数据导出每行有一个json,每个json描述一个事件。

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

这是Mixpanel对象的请求方法的定义。它所属的脚本初始化对象的实例,提供正确的凭据,并打印此方法的输出。基本上:

  • 请求是一个类似文件的对象,每行都应该有一个json文档
  • 我尝试遍历这些行(它们是json)并将它们附加到名为data的列表中,然后返回它。在
  • 应该有很多台词,但我只有一条

Tags: 对象方法selfcomapijsonformatdata

热门问题