使用 Zipfile 从单个文件夹创建单个存档
Create individual archives from individual folders with Zipfile
我有一个由 3 个文件夹组成的目录:
----- 001
----- 002
----- 003
我想创建 3 个存档,分别命名为 001.zip、002.zip 和 003.zip。每个存档必须由文件夹的内容组成。
我使用了 zipfile 库,并且成功地制作了一个文件夹的存档:
import os, zipfile
zf = zipfile.ZipFile('C:/zipfile4.zip', mode='w')
for dirpath,dirs,files in os.walk("C:/Test/002"):
for f in files:
fn = os.path.join(dirpath, f)
zf.write(fn)
但我不知道如何使用那个 zipfile 库连续创建许多档案。
以您的代码示例为基础,这应该可行:
import os
import zipfile
dir = "C:/Test/002"
# get list of all subdirectories in the directory
subdirs = [subdir for subdir in os.listdir(dir) if os.path.isdir(os.path.join(dir, subdir))]
# create a zip archive for each subdirectory
for subdir in subdirs:
zf_name = "C:/" + subdir + ".zip"
zf = zipfile.ZipFile(zf_name, mode='w')
for dirpath,dirs,files in os.walk(os.path.join(dir, subdir)):
for f in files:
fn = os.path.join(dirpath, f)
zf.write(fn)
我有一个由 3 个文件夹组成的目录:
----- 001
----- 002
----- 003
我想创建 3 个存档,分别命名为 001.zip、002.zip 和 003.zip。每个存档必须由文件夹的内容组成。
我使用了 zipfile 库,并且成功地制作了一个文件夹的存档:
import os, zipfile
zf = zipfile.ZipFile('C:/zipfile4.zip', mode='w')
for dirpath,dirs,files in os.walk("C:/Test/002"):
for f in files:
fn = os.path.join(dirpath, f)
zf.write(fn)
但我不知道如何使用那个 zipfile 库连续创建许多档案。
以您的代码示例为基础,这应该可行:
import os
import zipfile
dir = "C:/Test/002"
# get list of all subdirectories in the directory
subdirs = [subdir for subdir in os.listdir(dir) if os.path.isdir(os.path.join(dir, subdir))]
# create a zip archive for each subdirectory
for subdir in subdirs:
zf_name = "C:/" + subdir + ".zip"
zf = zipfile.ZipFile(zf_name, mode='w')
for dirpath,dirs,files in os.walk(os.path.join(dir, subdir)):
for f in files:
fn = os.path.join(dirpath, f)
zf.write(fn)