如何将目录转换为 ZIP?

How to convert a directory to a ZIP?

我想知道如何将 file (x) 直接转换为 ZIP (x.zip),然后使用 python (3.7)

将其转换回普通文件

我用shutil

import shutil
#creating archive
shutil.make_archive(output_filename, 'zip', dir_name)
#unpacking archive
shutil.unpack_archive(input_filename, extract_dir, 'zip') 

你也可以用 zipfile

import os
import zipfile
#creating zip file
zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
#extracting zip file
with zipfile.ZipFile("myzipfile.zip", 'r') as zip: 
    zip.extractall() 

对于没有密码保护的压缩和解压缩:

要压缩文件,您可以使用 pyminizip 模块

import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("/home/paulsteven/src.txt",'src', "dst.zip", None, compression_level)

要解压缩文件,请使用 Zipfile 模块

from zipfile import ZipFile
with ZipFile('/home/paulsteven/dst.zip') as zf:
    zf.extractall()

压缩和解压缩密码保护:

对于 ZIP:

import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("/home/paulsteven/src.txt",'src', "dst.zip", "password", compression_level)

对于解压缩:

from zipfile import ZipFile

with ZipFile('/home/paulsteven/dst.zip') as zf:
    zf.extractall(pwd=b'password')

破解已保护的ZIP文件:

import threading
from zipfile import ZipFile

def ext(f, pw):
    try:
        f.extractall(pwd=pw)
        print('Cracked the .zip file')
        print(':::::  %s' % pw)
    except:
        pass

f = 'file.zip'

pw = open('password.txt', 'r').readline()
for p in pw:
    crack=threading.Thread(target=ext, args=[f, p])
    crack.start()