是否有将目录添加到 zip 文件的功能?
Is there a function for adding a Directory to an zip file?
我正在尝试将包含内容的目录添加到 zip 存档中。 zip 存档已存在。
我没有找到任何具有这种功能的库。你知道有这样功能的图书馆吗?
您可以使用标准模块zipfile
要添加到现有 .zip
,您可以在 append more
("a"
)
中打开
zipfile.ZipFile('output.zip', 'a')
要添加目录中的所有文件,您需要 os.listdir(directory)
和 for
循环分别添加每个文件。
如果您有子文件夹,那么它可能需要 os.walk(directory)
而不是 os.listdir(directory)
。
folder = 'test'
with zipfile.ZipFile('output.zip', 'a') as myzip:
for filename in sorted(os.listdir(folder)):
fullpath = os.path.join(folder, filename)
myzip.write(fullpath) #, arcname=filename)
如果你想在 .zip
中创建 folder
那么你必须使用名称 folder/filename
作为 name
(你不能去 folder
使用 os.chdir()
并添加 filename
) 或者您可以使用 arcname="folder/filename"
.
创建它
例如,您可以使用当前时间在 zip
中创建新文件夹。
src_folder = 'test'
date = datetime.datetime.now()
dst_folder = date.strftime('%H-%m-%S') # one folder
#dst_folder = date.strftime('%H/%m/%S') # many folders separated by `/`
with zipfile.ZipFile('output.zip', 'a') as myzip:
for filename in sorted(os.listdir(src_folder)):
src_fullpath = os.path.join(src_folder, filename)
dst_fullpath = os.path.join(dst_folder, filename)
myzip.write(src_fullpath, arcname=dst_fullpath)
顺便说一句:
用于检查在 zip 文件中创建了什么的代码
with zipfile.ZipFile('output.zip', 'r') as myzip:
for item in myzip.filelist:
print(item.filename)
我正在尝试将包含内容的目录添加到 zip 存档中。 zip 存档已存在。 我没有找到任何具有这种功能的库。你知道有这样功能的图书馆吗?
您可以使用标准模块zipfile
要添加到现有 .zip
,您可以在 append more
("a"
)
zipfile.ZipFile('output.zip', 'a')
要添加目录中的所有文件,您需要 os.listdir(directory)
和 for
循环分别添加每个文件。
如果您有子文件夹,那么它可能需要 os.walk(directory)
而不是 os.listdir(directory)
。
folder = 'test'
with zipfile.ZipFile('output.zip', 'a') as myzip:
for filename in sorted(os.listdir(folder)):
fullpath = os.path.join(folder, filename)
myzip.write(fullpath) #, arcname=filename)
如果你想在 .zip
中创建 folder
那么你必须使用名称 folder/filename
作为 name
(你不能去 folder
使用 os.chdir()
并添加 filename
) 或者您可以使用 arcname="folder/filename"
.
例如,您可以使用当前时间在 zip
中创建新文件夹。
src_folder = 'test'
date = datetime.datetime.now()
dst_folder = date.strftime('%H-%m-%S') # one folder
#dst_folder = date.strftime('%H/%m/%S') # many folders separated by `/`
with zipfile.ZipFile('output.zip', 'a') as myzip:
for filename in sorted(os.listdir(src_folder)):
src_fullpath = os.path.join(src_folder, filename)
dst_fullpath = os.path.join(dst_folder, filename)
myzip.write(src_fullpath, arcname=dst_fullpath)
顺便说一句:
用于检查在 zip 文件中创建了什么的代码
with zipfile.ZipFile('output.zip', 'r') as myzip:
for item in myzip.filelist:
print(item.filename)