Python 2.7 Python从api调用读取zip存档中的文件

Python 2.7 Python从api调用读取zip存档中的文件,python-2.7,rest,api,zip,httpwebresponse,Python 2.7,Rest,Api,Zip,Httpwebresponse,我有一个restful端点,我的RESTAPI可以向它发出get请求,该文件是一个zip文件。在这个zip文件中,有两个文件。我只想从这个zip文件中读取1个文件中的内容。我能够做一个测试,它喜欢我的代码停留在file=zipfile.zipfile(io.BytesIO(response_object.content))行上 ZipFileResponseHandler类: def __init__(self,**args): self.csv_file_to_index = args

我有一个restful端点,我的RESTAPI可以向它发出get请求,该文件是一个zip文件。在这个zip文件中,有两个文件。我只想从这个zip文件中读取1个文件中的内容。我能够做一个测试,它喜欢我的代码停留在file=zipfile.zipfile(io.BytesIO(response_object.content))行上

ZipFileResponseHandler类:

def __init__(self,**args):
    self.csv_file_to_index = args['csv_file_to_index']

def __call__(self, response_object, raw_response_output, response_type, req_args, endpoint):
    file = zipfile.ZipFile(io.BytesIO(response_object.content))
    for name in file.namelist():
        if re.match(name, self.csv_file_to_index):
            data =file.read(name)
            print_xml_stream(repr(data))

所以我找到了自己答案的答案。因为我使用的是Python2.7,所以用于处理response_对象的对应方法是StringIO而不是BytesIO。所以这句话:

file=zipfile.zipfile(io.BytesIO(response\u object.content))

应该是


file=zipfile.zipfile(StringIO.StringIO(response\u object.content))

因此我找到了自己答案的解决方案。因为我使用的是Python2.7,所以用于处理response_对象的对应方法是StringIO而不是BytesIO。所以这句话:

file=zipfile.zipfile(io.BytesIO(response\u object.content))

应该是

file=zipfile.zipfile(StringIO.StringIO(response\u object.content))