Tengo un archivo de texto guardado en S3 que es una tabla delimitada por tabulaciones. Quiero cargarlo en pandas pero no puedo guardarlo primero porque lo estoy ejecutando en un servidor heroku. Esto es lo que tengo hasta ahora.
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)
el error es
OSError: Expected file path name or file-like object, got <class 'bytes'> type
¿Cómo convierto el cuerpo de la respuesta a un formato que aceptarán los pandas?
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
ACTUALIZACIÓN: el uso de lo siguiente funcionó
file = response["Body"].read()
y
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
io.BytesIO(file)
io.StringIO(file)
file
read_csv()