Saya memiliki file teks yang disimpan di S3 yang merupakan tabel tab delimited. Saya ingin memuatnya ke dalam panda tetapi tidak dapat menyimpannya terlebih dahulu karena saya menjalankannya di server heroku. Inilah yang saya miliki sejauh ini.
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)
kesalahannya adalah
OSError: Expected file path name or file-like object, got <class 'bytes'> type
Bagaimana cara mengubah isi respons menjadi format yang akan diterima 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
UPDATE - Menggunakan yang berikut ini berhasil
file = response["Body"].read()
dan
pd.read_csv(io.BytesIO(file), header=14, delimiter="\t", low_memory=False)
io.BytesIO(file)
atauio.StringIO(file)
bukanfile
dalamread_csv()
panggilan