gpt4 book ai didi

python - 使用 Python 从目录创建 zip

转载 作者:行者123 更新时间:2023-12-02 02:41:54 28 4
gpt4 key购买 nike

我正在尝试使用 Python 从一个目录创建一个 zip 文件。我看过How to create a zip archive of a directory in Python?它有效,但我有另一个问题。所以我有这个:

MyDir
|- DirToZip
| |- SubDir1
| | |- file1.txt
| | |- file2.txt
| |- SubDir2
| | |- file3.txt
| | |- file4.txt
| |- basefile.txt
| |- mimetype
|- create_zip.py

到目前为止,这是我的 create_zip.py:

import os, zipfile

name = 'DirToZip'
zip_name = name + '.zip'

with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zip_ref:
for folder_name, subfolders, filenames in os.walk(name):
for filename in filenames:
file_path = os.path.join(folder_name, filename)
zip_ref.write(file_path)

zip_ref.close()

正如我所说,就代码而言,它工作正常,但问题是 zip 文件没有按照我想要的方式创建。现在它有根文件夹 DirToZip 作为文件根目录中的唯一文件夹和该文件夹中的其他文件。但我希望没有那个根文件夹,只有 zip 文件中的子文件夹。

错误(我不想要的):

DirToZip.zip
|- DirToZip
| |- SubDir1
| | |- file1.txt
| | |- file2.txt
| |- SubDir2
| | |- file3.txt
| | |- file4.txt
| |- basefile.txt
| |- mimetype

正确(我想要的):

DirToZip.zip
|- SubDir1
| |- file1.txt
| |- file2.txt
|- SubDir2
| |- file3.txt
| |- file4.txt
|- basefile.txt
|- mimetype

我尝试在 with zipfile... 之后添加 for file in os.listdir(name): 并更改为 ... in os.walk( file) 但这没有用。 zip 文件变成了空文件。

我能做什么?

最佳答案

就这么简单:

import os, zipfile

name = 'DirToZip'
zip_name = name + '.zip'

with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED) as zip_ref:
for folder_name, subfolders, filenames in os.walk(name):
for filename in filenames:
file_path = os.path.join(folder_name, filename)
zip_ref.write(file_path, arcname=os.path.relpath(file_path, name))

zip_ref.close()

关于python - 使用 Python 从目录创建 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58955341/

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