Как записать файл в S3 с помощью Pandas - PullRequest
0 голосов
/ 19 октября 2018

Я хочу записать столбец фрейма данных в формате .ann на S3.

Сейчас я использую следующий код для этого.

df['user_input'].to_csv(ann_file_path, header=None, index=None, sep=' ')

Где ann_file_path - полный путь к файлу .ann на сервере.

Япоявляется следующее сообщение об ошибке:

[Errno 22] Invalid argument: 'https://s3-eu-west-1.amazonaws.com/bucket/sub_folder/somefile.ann'

Почему я это получаю?

Кроме того, нужно ли мне использовать Boto3 для записи или я могу напрямую записать файл на S3 с полным путем?

Я могу подумать, что для этого может потребоваться некоторая авторизация, но сообщение об ошибкекажется, отличается от того, что связано с авторизацией.

1 Ответ

0 голосов
/ 19 октября 2018

Я решил.Нам нужно рукопожатие AWS с использованием access_key_id и secret_key для AWS.

Получить URL, начиная с имени сегмента (не https: / ...), следовательно, избавиться от всего, что было до него.

Мой URL: https://s3-eu-west-1.amazonaws.com/bucket/sub_folder/somefile.ann

Преобразовано в: bucket/sub_folder/somefile.ann

Код для этого: ann_file_path = ann_file_path.split('.com/', 1)[1]

Как только я получил ann_file_path, я использовал s3fs библиотека python для загрузки файла ann на сервер.

bytes_to_write = df['user_input'].to_csv(header=None, index=None).encode()
fs = s3fs.S3FileSystem(key=settings.AWS_ACCESS_KEY_ID, secret=settings.AWS_SECRET_ACCESS_KEY)
with fs.open(ann_file_path, 'wb') as f:
   f.write(bytes_to_write)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...