python - 如何在没有写入所有目录的情况下在 python 中压缩文件
问题描述
我试图压缩多个文件,但是当我打开 zip 文件时,我遇到了一个奇怪的问题,所有指向这些文件的目录也都列出了
home/site/Uploads/test/
这是我写的python代码
import os
import zipfile
zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("D:/home/site/Uploads/test/"):
zf.write(dirname)
for filename in files:
zf.write(os.path.join(dirname, filename))
zf.close()
压缩文件很好,但为什么还要列出所有其他目录。
我得到了这样的 zip 文件-->home-->site-->Uploads-->test-->file.txt 我想要的是这个-->file.txt
解决方案
让我们假设以下目录结构:
./uploads
└── foo
└── bar
├── 1.txt
└── baz
└── 2.txt
您只需要正确设置 arcname:
import os
import zipfile
zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("/tmp/uploads"):
for filename in files:
zf.write(os.path.join(dirname, filename), arcname=filename)
zf.close()
解压缩显示 zip 文件,如下所示:
unzip -l myzipfile.zip Archive: myzipfile.zip
Length Date Time Name
--------- ---------- ----- ----
0 10-21-2019 15:03 1.txt
0 10-21-2019 15:03 2.txt
--------- -------
0 2 files
推荐阅读
- javascript - Edge:打开新窗口选项卡时出现 Script70 错误
- c# - 如何使用自定义属性覆盖属性设置器?
- node.js - 带有 Express 的 Node.JS,脚本符合但不创建 http 服务器
- c++ - SDL 访问 SDL_Surface 的像素数据
- android - 在 retrofit2 界面中检索 SharedPreferences
- amazon-web-services - CloudFormation 仅在条件有效时创建堆栈,如果无效则显示自定义错误消息
- mongodb - 在 Windows 8.1 中运行 mongodb 时文件丢失问题
- android - Xamarin.Forms AppCenter 推送通知
- firebase - 如何通过从对话流的内联实现代码调用自定义事件来调用意图?
- django - 如何在 Django admin 中过滤字段(表单)中的选择?