如何在 python、内存中 (AWS Lambda) 将 ZIP 转换为 GZIP
How to convert ZIP to GZIP in python, in-memory (AWS Lambda)
我已经成功地将 zip 文件转换为 gzip,使用 AWS lambda 的本地存储 /tmp
。问题是此存储空间最大为 500Mb。
def zip_to_gzip(zip):
# Unzip <filename>.zip
zfile = ZipFile(zip)
filename = zfile.namelist()[0]
data = zfile.read(filename)
f = open('/tmp/' + str(filename), 'wb')
f.write(data)
f.close()
# Compress <filename>.gzip
gzip_file = gzip.open(
f'/tmp/{filename}.gz', 'wb')
gzip_file.write(data)
gzip_file.close()
我想只在 RAM 中执行此操作,而不使用任何本地 storage/hard 驱动器。
有什么想法吗? io
模块似乎不适合这种用途(虽然我不是 100% 确定)
这应该按照你的要求去做:
#!/usr/bin/env python3
import gzip
# Make 10kB of compressible zeroes of data
data = bytearray(10240)
outfilename = 'sample.gz'
with gzip.open(outfilename, 'wb') as output:
output.write(data)
改编自 Doug Hellman 的优秀作品 PYMOTW。
检查结果
# The size is 52 bytes:
ls -l sample.gz
-rw-r--r-- 1 mark staff 52 7 Feb 17:51 sample.gz
# The type is correct
file -b --mime sample.gz
application/gzip; charset=binary
# It decompresses to the correct size
gunzip < sample.gz | wc -c
10240
我已经成功地将 zip 文件转换为 gzip,使用 AWS lambda 的本地存储 /tmp
。问题是此存储空间最大为 500Mb。
def zip_to_gzip(zip):
# Unzip <filename>.zip
zfile = ZipFile(zip)
filename = zfile.namelist()[0]
data = zfile.read(filename)
f = open('/tmp/' + str(filename), 'wb')
f.write(data)
f.close()
# Compress <filename>.gzip
gzip_file = gzip.open(
f'/tmp/{filename}.gz', 'wb')
gzip_file.write(data)
gzip_file.close()
我想只在 RAM 中执行此操作,而不使用任何本地 storage/hard 驱动器。
有什么想法吗? io
模块似乎不适合这种用途(虽然我不是 100% 确定)
这应该按照你的要求去做:
#!/usr/bin/env python3
import gzip
# Make 10kB of compressible zeroes of data
data = bytearray(10240)
outfilename = 'sample.gz'
with gzip.open(outfilename, 'wb') as output:
output.write(data)
改编自 Doug Hellman 的优秀作品 PYMOTW。
检查结果
# The size is 52 bytes:
ls -l sample.gz
-rw-r--r-- 1 mark staff 52 7 Feb 17:51 sample.gz
# The type is correct
file -b --mime sample.gz
application/gzip; charset=binary
# It decompresses to the correct size
gunzip < sample.gz | wc -c
10240