Python Лямбда-функция для чтения файла CSV - PullRequest
0 голосов
/ 02 марта 2020
def lambda_handler(event, context):
    bucket = s3_obj.Bucket(BucketName)
    for obj in bucket.objects.all():
        key = obj.key
        reader = csv.reader(open(key,'w'),delimiter=',')

Я пытаюсь использовать CSV-ридер, чтобы открыть файл в корзине S3, но когда я выполняю это, он выдает ошибку, говорящую:

"[Errno 30] Только для чтения файловая система: 'AB C .csv' "

Но файл фактически существует в корзине.

Может кто-нибудь, пожалуйста, сообщите мне, где я ошибся.

Спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Вы открываете файл для записи без разрешения. Более того, вы пытаетесь открыть объект из s3, и это невозможно. Файл не находится в локальной файловой системе. Вы должны прочитать его, используя:

body = obj.get()['Body'].read()

, а затем разбить файл на строки и передать их в csv reader:

csv.reader(body.split('\n'),...)

Обратите внимание, что если, например, ваш файл имеет формат Windows, вам может потребоваться дополнительная обработка, прежде чем передавать его читателю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...