J'ai un fichier texte enregistré sur S3 qui est une table délimitée par des tabulations. Je veux le charger dans des pandas mais je ne peux pas le sauvegarder d'abord car je suis en cours d'exécution sur un serveur heroku. Voici ce que j'ai jusqu'ici.
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'erreur est
OSError: Expected file path name or file-like object, got <class 'bytes'> type
Comment convertir le corps de la réponse dans un format que les pandas accepteront?
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
MISE À JOUR - Utilisation de ce qui suit travaillé
file = response["Body"].read()
et
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
io.BytesIO(file)
ouio.StringIO(file)
au lieu defile
l'read_csv()
appel