Python 2.7 Python从api调用读取zip存档中的文件
我有一个restful端点,我的RESTAPI可以向它发出get请求,该文件是一个zip文件。在这个zip文件中,有两个文件。我只想从这个zip文件中读取1个文件中的内容。我能够做一个测试,它喜欢我的代码停留在file=zipfile.zipfile(io.BytesIO(response_object.content))行上 ZipFileResponseHandler类: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
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))