python - os.walk 某些文件类型到现有的 ZipFile?

基本上,我需要将文件夹中某种类型的所有文件复制到最高级别的 ZipFile 中(因此不在文件夹中)。

例如,我有一个文件夹“A Folder”,该文件夹中有大量 .png 文件。我想将所有这些文件复制到现有的 ZipFile 中。目前我也只能获取要复制的文件夹,所以我最终得到的是 'ZipFile\A Folder\lots of .pngs' 而不是 'ZipFile\lots of .pngs'

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

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

另一个问题,您将如何从 ZipFile 中删除文件夹?

最佳答案

根据 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)

https://stackoverflow.com/questions/7402200/

相关文章:

PHP 5.2 无法解释 - 文件停止正常执行

msbuild - 如何转储从 MSBuild 导入的属性表列表

python - 如何在 setup.py 中为 cython 设置 sysroot

python - 在 Matplotlib 中设置颜色图的范围

spring - 无法从 InputStream : Invalid Content-Type:te

xml - Spring:java.util.Locale 类型的 bean 的 Autowirin

jsf - 如何注入(inject)不同的子类作为 ManagedProperty JSF 2?

maven-2 - 来自另一个模块的 Maven 模块属性

sql-server - 从游标源 SQL Server 中删除行

maven-2 - Maven : Could not transfer artifact Erro