2017-11-01 6 views
0

Ich habe einen erholsamen Endpunkt, die meine Ruhe api könnte eine Anfrage an sie machen und die Datei ist eine Zip-Datei. In dieser Zip-Datei befinden sich 2 Dateien. Ich möchte nur den Inhalt in 1 Datei von diesem Zip-Archiv lesen. Ich war in der Lage, einen Test zu machen, und es mag, dass mein Code in Zeile file = zipfile.ZipFile (io.BytesIO (response_object.content)) festhielt.Python lesen Sie eine Datei in Zip-Archiven aus api Anruf

Klasse 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)) 

Antwort

0

So fand ich die Lösung für meine eigene Antwort. Da ich Python 2.7 verwende, ist die entsprechende Methode, die verwendet wird, um das response_object zu behandeln, StringIO nicht BytesIO. So ist die Zeile:

file = zipfile.ZipFile (io.BytesIO (response_object.content))

sollte

-Datei = zipfile.ZipFile (StringIO.StringIO (response_object.content))