#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 между ними. Любая идея, как игнорировать эти два во время чтения. Спасибо.