Mam plik tekstowy zapisany na S3, który jest tabelą rozdzielaną tabulatorami. Chcę załadować go do pandy, ale nie mogę go najpierw zapisać, ponieważ pracuję na serwerze heroku. Oto, co mam do tej pory.
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)
błąd jest
OSError: Expected file path name or file-like object, got <class 'bytes'> type
Jak przekonwertować treść odpowiedzi na format, który przyjmą pandy?
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
UPDATE - Korzystanie z następujących działało
file = response["Body"].read()
i
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
io.BytesIO(file)
lubio.StringIO(file)
zamiastfile
w trakcieread_csv()
rozmowy