【发布时间】:2021-12-05 20:37:59
【问题描述】:
我从 AWS S3 下载了一个 zip 文件并将其解压缩。解压后,所有文件都保存在tmp/文件夹中。
s3 = boto3.client('s3')
s3.download_file('testunzipping','DataPump_10000838.zip','/tmp/DataPump_10000838.zip')
with zipfile.ZipFile('/tmp/DataPump_10000838.zip', 'r') as zip_ref:
zip_ref.extractall('/tmp/')
lstNEW = zip_ref.namelist()
listNEW 的输出是这样的:
['DataPump_10000838/', '__MACOSX/._DataPump_10000838', 'DataPump_10000838/DockBooking', '__MACOSX/DataPump_10000838/._DockBooking', 'DataPump_10000838/LoadEquipment', '__MACOSX/DataPump_10000838/._LoadEquipment', ....]
LoadEquipment 和 DockBooking 是文件,但其余的不是。是否可以在不创建这些临时文件的情况下解压缩文件?或者我可以过滤掉真实文件吗?因为以后,我需要使用正确的文件并gzip它们。
$item_$unixepochtimestamp.csv.gz
我是否使用压缩功能?
【问题讨论】:
-
我不确定您的问题是什么,或者您在解压缩后如何使用这些文件。但是...也许您只是想解压缩到内存(而不是写入 /tmp):stackoverflow.com/a/10909016/421195。无论如何,听起来你绝对不想要“extractall()”。在这里寻找替代品:docs.python.org/3/library/zipfile.html
-
解压缩后,我想将它们转换为 gzip 并存储在另一个 s3 存储桶中。我怎样才能通过阅读实现这一目标?我的意思是如何在不下载/提取它们的情况下压缩所有解压缩的文件? @paulsm4 另外,我正在写信给这个答案的 /tmp bc stackoverflow.com/a/69586599/12304000