如何将特定文件类型用os.walk添加到已存在的ZipFile中?

3 投票
1 回答
1529 浏览
提问于 2025-04-17 02:11

基本上,我需要把一个文件夹里某种类型的所有文件复制到一个ZipFile中,要求是放在最顶层,也就是不能放在任何子文件夹里。

举个例子,我有一个文件夹叫'A Folder',里面有很多.png格式的文件。我想把这些文件都复制到一个已经存在的ZipFile里。目前我只能把整个文件夹一起复制过去,所以最后得到的是'ZipFile\A Folder\很多.png文件',而不是我想要的'ZipFile\很多.png文件'

我现在用来移动文件和文件夹的代码是:

for root, dirs, files in os.walk('A Folder'):
    for f in files:
        fname = os.path.join(root, f)
        myzip.write(fname)

还有一个小问题,怎么才能从ZipFile中删除一个文件夹呢?

1 个回答

2

根据Python的文档,zipfile.write() 方法支持一个第二个参数,这个参数是目标名称(也就是在压缩包里的名字)。你可以这样使用它:

for root, dirs, files in os.walk('A Folder'):
    for f in files:
        fname = os.path.join(root, f)
        new_path = os.path.normpath(fname.replace('A Folder', ''))
        myzip.write(fname, new_path)

撰写回答