gpt4 book ai didi

python - 压缩目录目标

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:15 25 4
gpt4 key购买 nike

我在 Python 2.6 中使用这个基本脚本来压缩目录:

def zipdir(path, ziph):
import os, zipfile
for(dir, _, files) in os.walk(path):
for file in files:
ziph.write(os.path.join(dir, file))

ziph = zipfile.ZipFile(name + '.zip', 'w', zipfile.ZIP_DEFLATED)
path = 'c:/test/directory'

问题出在我的新 zip 文件中。

例如,我要压缩的目标文件夹位于 c:/test/directory/myfiles

所以当我压缩它时,不是得到:file.zip/directory/myfiles,

我有:file.zip/test/directory/myfiles

我不想保留“测试”文件夹。

有人可以告诉我如何解决吗?

最佳答案

在 python 2.7 或更高版本中:

尝试使用“shutil”包

import shutil
import os

zip_path = 'c:/test/new_zip_file'
target_dir_path = 'c:/test/directory'

# such as "c:/test/"
parent_target_dir_path = os.path.dirname(target_dir_path)
# such as "directory"
target_dir_name = os.path.basename(target_dir_path)

shutil.make_archive(zip_path, 'zip', root_dir=parent_target_dir_path, base_dir=target_dir_name)

结果:

new_zip_file.zip
└── directory
├── myfile1
├── myfile2
└── myfile3 ...

已编辑

在 python 2.6 中:

import zipfile

def zipdir(path, ziph):
import os, zipfile
parent_dir_name = os.path.basename(path)
for(dir, _, files) in os.walk(path):
for file in files:
path_in_zip = dir[dir.find(parent_dir_name):]
ziph.write(os.path.join(dir, file) , arcname = path_in_zip+"/"+file)

name = "ziptest"

ziph = zipfile.ZipFile(name + '.zip', 'w', zipfile.ZIP_DEFLATED)
path = 'c:/test/directory'

zipdir(path, ziph)

它使用参数 arcname 并指定 in-zip-path。
例如,ziph.write("c:/test/directory/myfile1", arcname = "dirctory/myfile1") 生成一个 zip 文件,例如 ziptest.zip/dirctory/myfile1

关于python - 压缩目录目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51139084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com