проблема с чтением csv-файла из AWS S3 с помощью boto3

#pandas #amazon-web-services #amazon-s3 #boto3

Вопрос:

У меня есть csv-файл со следующими столбцами:

Имя Адрес/1 Адрес/2 Город Штат

Когда я пытаюсь прочитать этот csv-файл с локального диска, у меня нет проблем.

Но когда я пытаюсь прочитать его с S3 с помощью приведенного ниже кода, я получаю ошибку при использовании ввода-вывода.СтрингИО. Когда я использую io.BytesIO каждая запись отображается в виде одного столбца. Хотя файл имеет значение»,», некоторые столбцы содержат в нем «/n » или «/t». Я считаю, что это вызывает проблему.

Я использовал AWS Wrangler без проблем. Но мое требование-прочитать этот csv-файл с помощью boto3

 import pandas as pd
import boto3

s3 = boto3.resource('s3', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
my_bucket = s3.Bucket(AWS_S3_BUCKET)
csv_obj=my_bucket.Object(key=key).get().get('Body').read().decode('utf16')
data= io.BytesIO(csv_obj) #io.StringIO(csv_obj)
sdf = pd.read_csv(data,delimiter=sep,names=cols, header=None,skiprows=1)
print(sdf)

Any suggestion please?
 

Комментарии:

1. Что именно представляет собой ваше досье?

Ответ №1:

попробуйте get_object():

 obj = boto3.client('s3').get_object(Bucket=AWS_S3_BUCKET, Key=key)
data = io.StringIO(obj['Body'].read().decode('utf-8'))
 

Комментарии:

1. Спасибо за ваш ответ. Я нашел проблему. Хотя файл представляет собой файл, разделенный запятыми, но некоторые из них также содержат /t и /n между ними. Любая идея, как игнорировать эти два во время чтения. Спасибо.