Я пытаюсь (и не могу) создать функцию Python, которая, по сути, архивирует некоторый текст, а затем архивирует архив снова и снова (число, основанное на параметре).
Таким образом, мы получим 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 и т. Д. - просто сказать на случай, если какие-либо эффекты мне помогут.
Спасибо