【发布时间】:2018-12-08 06:38:31
【问题描述】:
我正在尝试(但失败)创建一个 Python 函数,该函数本质上是压缩一些文本,然后一次又一次地压缩存档(基于参数的数字)。
所以我们最终会得到包含 file2.zip 的 file1.zip,而 file2.zip 又包含 file3.zip。即(file1.zip(file2.zip(file3.zip)))。希望表达得足够清楚。
import io
import zipfile
import gzip
hexdata = "5a69702054657374"
def zip_it(filename, depth):
zip_buffer = io.BytesIO()
for i in range(0, depth):
with zipfile.ZipFile(zip_buffer, "a", zipfile.ZIP_DEFLATED, False) as zip_file:
zip_file.writestr(filename + str(i), bytes.fromhex(hexdata).decode("utf-8"))
with open(filename + ".zip", "wb") as f:
f.write(zip_buffer.getvalue())
if __name__ == '__main__':
zip_it("testfile", 3)
上面的代码是我目前所拥有的,它不太正确,它创建了 1 个压缩文件,其中 3 个文件都在同一级别,而不是在彼此之间。我认为这是一个递归问题。
我可能也想对 gzip、rar 等做同样的事情——只是说以防万一我得到任何帮助。
谢谢
【问题讨论】: