Ho un file di testo salvato su S3 che è una tabella delimitata da tabulazioni. Voglio caricarlo in panda ma non posso salvarlo prima perché sto funzionando su un server heroku. Ecco cosa ho finora.
import io
import boto3
import os
import pandas as pd
os.environ["AWS_ACCESS_KEY_ID"] = "xxxxxxxx"
os.environ["AWS_SECRET_ACCESS_KEY"] = "xxxxxxxx"
s3_client = boto3.client('s3')
response = s3_client.get_object(Bucket="my_bucket",Key="filename.txt")
file = response["Body"]
pd.read_csv(file, header=14, delimiter="\t", low_memory=False)
l'errore è
OSError: Expected file path name or file-like object, got <class 'bytes'> type
Come faccio a convertire il corpo della risposta in un formato accettato dai panda?
pd.read_csv(io.StringIO(file), header=14, delimiter="\t", low_memory=False)
returns
TypeError: initial_value must be str or None, not StreamingBody
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
returns
TypeError: 'StreamingBody' does not support the buffer interface
AGGIORNAMENTO - Utilizzando quanto segue ha funzionato
file = response["Body"].read()
e
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
io.BytesIO(file)
oio.StringIO(file)
invece chefile
nellaread_csv()
chiamata