Мне просто интересно, как записать текстовый файл с кодировкой utf-8 непосредственно в AWS S3 без необходимости сохранять этот текстовый файл (временно или нет) на локальном компьютере. Чтобы быть конкретным, как показано ниже, я думаю, что мне удалось сохранить файл, который был загружен из Интернета и был проанализирован с библиотекой BeautifulSoup локально, и сохранить этот файл в назначенной корзине S3.
import codecs
import boto3
import requests
from bs4 import BeautifulSoup
url = 'https://www.sec.gov/Archives/edgar/data/732247/0000950144-00-012588.txt'
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
text = soup.get_text("\n")
txt_path = 'report.txt'
# Saving the parsed file into local directory in the name of 'report.txt'
with codecs.open(txt_path, 'w', encoding='utf-8') as fout:
fout.write(text)
# Loading the parsed file 'report.txt' and saving it into AWS S3
# with the 'my-bucket-name' as the bucket name
# and 'report_s3.txt' as the file name in that bucket
s3 = boto3.resource('s3')
with codecs.open('report.txt', 'rb', encoding='utf-8') as fin:
text = fin.read()
s3.Object('my-bucket-name', 'report_s3.txt').put(Body=text)
Но я бы хотел пропустить этот процесс локального сохранения и сразу сохранить этот проанализированный файл с кодировкой utf-8 в корзину S3. Есть ли хорошая идея сделать это? Заранее спасибо!