首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python将文件列表添加到zip文件中

使用Python将文件列表添加到zip文件中
EN

Stack Overflow用户
提问于 2014-08-28 16:43:34
回答 2查看 12.4K关注 0票数 14

我想写一个脚本来添加所有的‘.py’文件到一个压缩文件。

这就是我所拥有的:

代码语言:javascript
运行
复制
import zipfile
import os

working_folder = 'C:\\Python27\\'

files = os.listdir(working_folder)

files_py = []

for f in files:
    if f[-2:] == 'py':
        fff = working_folder + f
        files_py.append(fff)

ZipFile = zipfile.ZipFile("zip testing.zip", "w" )

for a in files_py:
    ZipFile.write(a, zipfile.ZIP_DEFLATED)

但是,它会给出一个错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "C:\Python27\working.py", line 19, in <module>
    ZipFile.write(str(a), zipfile.ZIP_DEFLATED)
  File "C:\Python27\lib\zipfile.py", line 1121, in write
    arcname = os.path.normpath(os.path.splitdrive(arcname)[1])
  File "C:\Python27\lib\ntpath.py", line 125, in splitdrive
    if p[1:2] == ':':
TypeError: 'int' object has no attribute '__getitem__'

所以似乎给出的文件名是不正确的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-28 16:56:11

您需要将压缩类型作为关键字参数传入:

代码语言:javascript
运行
复制
ZipFile.write(a, compress_type=zipfile.ZIP_DEFLATED)

如果没有关键字参数,您将为ZipFile.write()提供一个整型arcname参数,这会导致您在arcname被规范化时看到的错误。

票数 14
EN

Stack Overflow用户

发布于 2014-09-02 11:52:53

14年9月2日3:52的原始答复

根据上面的指导,最终的结果是:(只是把它们放在一起,以防有用)

代码语言:javascript
运行
复制
import zipfile
import os

working_folder = 'C:\\Python27\\'

files = os.listdir(working_folder)

files_py = []

for f in files:
    if f.endswith('py'):
        fff = os.path.join(working_folder, f)
        files_py.append(fff)

ZipFile = zipfile.ZipFile("zip testing3.zip", "w" )

for a in files_py:
    ZipFile.write(os.path.basename(a), compress_type=zipfile.ZIP_DEFLATED)
ZipFile.close()

在2020年3月添加了由@jinzy at zip file and avoid directory structure启发的,上面的最后一行改为下面,以避免压缩文件中的文件结构。

代码语言:javascript
运行
复制
ZipFile.write(a, "C:\\" + os.path.basename(a), compress_type=zipfile.ZIP_DEFLATED)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25544475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档