python - zip 文件正在压缩到默认项目目录文件夹而不是文件目录
问题描述
我的代码是:
def zip_file(path, zip_file_name ,root):
ziph = zipfile.ZipFile(zip_file_name, 'w', zipfile.ZIP_DEFLATED)
ziph.write(path, arcname= os.path.join(root, os.path.splitext(zip_file_name)[0]))
#os.remove(path)
ziph.close()
def zip_dir(dir_to_zip):
for root, dirs, files in os.walk(dir_to_zip):
for curr_file in files:
fullFilePath = os.path.join(root, curr_file)
if not curr_file.endswith('.zip'):
zip_file(fullFilePath, "{}.zip".format(fullFilePath), root)
if __name__ == '__main__':
zip_dir('C:\\Users\\My_namne\\Desktop\\TEST')
我希望它将文件压缩到原始文件夹,但它会压缩到我项目的所有文件的工作目录。如何更改输出存档的目录?现在它压缩到我的工作目录并将整个根压缩到路径
解决方案
第一个参数zipfile.ZipFile
应该是您正在创建的档案的完整路径。做出改变zip_dir
def zip_dir(dir_to_zip):
for root, dirs, files in os.walk(dir_to_zip):
for curr_file in files:
fpath = os.path.join(root, curr_file)
zip_file(fpath, "{}.zip".format(fpath),root)
这将为其目录中的每个文件创建一个存档。存档将只包含文件本身,而不是文件的整个路径。
import os, zipfile
def zip_file(filepath, zipfilepath ,curr_file):
with zipfile.ZipFile(zipfilepath, 'w', zipfile.ZIP_DEFLATED) as ziph:
ziph.write(filepath, arcname=curr_file)
def zip_dir(dir_to_zip):
for root, dirs, files in os.walk(dir_to_zip):
for curr_file in files:
if not curr_file.endswith('.zip'):
filepath = os.path.join(root, curr_file)
zipfilepath = "{}.zip".format(filepath)
zip_file(filepath, zipfilepath, curr_file)
推荐阅读
- firebase - 将 Firebase 分析发送到多个 Google 分析属性(GA4 和 UA)
- javascript - 了解通过我的在线商店中的特定链接完成的订单
- scheduled-tasks - Dask 集群规模的意外行为
- reactjs - 在 React (Next.js + css-modules) 中使用 SCSS @exported classNames 的更短方式
- c# - WPF 在运行时创建可移动(允许拖放)UI 控件
- sql - 如何根据雪花(SQL)中最小值和最大值之间的所有值的范围创建行?
- php - 如何在prestashop中获取第二家商店的购物车内容
- python - Python Pandas 如何计算列中每隔一行的平均值
- spring-boot - 是否可以将 swagger 交互式 api 文档导出为静态 html 以放入 Confluence 中?
- python - 使用 Python 从 Google-Drive 下载大文件夹