Я играю с обработкой zip-файлов на S3, извлекаю данные из текстовых файлов в zip и записываю эти текстовые данные обратно на S3.Я настроил вещи, создав zip-файл с двумя небольшими текстовыми файлами.Один вызвал 123.txt, содержащий строку:
123245
Другой был назван abc.txt и содержал строки:
abc
def
x
Это то, что у меня есть с точки зрения извлечения данных
import zipfile
import boto
import io
def zip_extract(x):
in_memory_data = io.BytesIO(x[1])
file_obj = zipfile.ZipFile(in_memory_data, "r")
files = [i for i in file_obj.namelist()]
return dict(zip(files, [file_obj.open(file).read() for file in files]))
zips = sc.binaryFiles("s3a://my_bucket/myzip.zip")
files_data = zips.map(zip_extract).collect()
И когда я запускаю следующий код, я вижу имена файлов и их содержимое примерно так:
for data in files_data:
for k, v in data.items():
print('{}: {}'.format(k, v))
123.txt: b'12345'
abc.txt: b'abc\r\ndef\r\nx'
У меня вопрос о том, как мне теперь создать двафайлы 123.txt и abc.txt на S3 с содержимым, как показано?