这里我们使用zipfile
这个库进行操作,保存压缩文件相对简单,只需要指定文件名即可,不需要读取那个文件:
with zipfile.ZipFile("zip文件路径", mode, zipfile.ZIP_DEFLATED) as z:z.write("压缩源文件路径", "在压缩文件中保存的相对路径")
文件的读取请参考:Python读取zip文件并解压,循环解压文件内的每个文件
注意:zipfile只支持utf8编码(与ascii,除此之外不支持别的编码),如果编码报错,请直接使用utf8读取或写入
示例程序
import os
import zipfiledef write_to_zip(zip_file, compressing_file_path, mode='w'):"""将整个目录(递归全文件)全文件保存在zip文件中:param zip_file:保存zip:param compressing_file_path:保存的文件路径:param mode:保存文件的模式 w覆写 a追加"""with zipfile.ZipFile(zip_file, mode, zipfile.ZIP_DEFLATED) as z:for _dir_path, _dirs, _files in os.walk(compressing_file_path): # 遍历全部目录file_path = _dir_path.replace(compressing_file_path, '') # 从当前目录的子目录开始file_path = file_path and file_path + os.sep or ''for filename in _files: # 保存文件z.write(os.path.join(_dir_path, filename), file_path + filename)def main():write_to_zip("写入zip的名称.zip", "data/要保存的文件目录")if __name__ == '__main__':main()