python zipfile 目录也被复制了

3 投票
3 回答
6276 浏览
提问于 2025-04-16 23:19

我正在尝试使用Python的zipfile模块,

我现在使用的代码是:

z = zipfile.ZipFile("jar/algorithms.jar", "w")
z.write('directory/QuickSort.class')

问题是,我的文件被添加到jar包中的方式是:

algorithms.jar>directory>QuickSort.class

我想要的效果是:

algorithms.jar>QuickSort.class

我该怎么做才能实现这个呢?

3 个回答

0

考虑下面这个例子。这个例子会在一个文件夹里创建一个压缩文件,并且在压缩文件中去掉原来文件夹的目录结构。

import os
import zipfile
mydir = r'c:\temp\filestozip' #all the files in this directory will be archived
zf = zipfile.ZipFile(mydir + '\\myzipfile.zip', "w")
for dirname, subdirs, files in os.walk(mydir):
    for filename in files:
        if not filename.endswith('.zip'): #
            zf.write(os.path.join(dirname, filename),arcname=filename)
zf.close()      
0

你可以在调用write的时候,作为第二个参数提供你希望文件在压缩包中显示的名字,像这样:

In [39]: z = zipfile.ZipFile("jar/algorithms.jar", "w")

In [40]: z.printdir()
File Name                                             Modified             Size

In [41]: z.write("directory/QuickSort.class", "QuickSort.class")

In [42]: z.printdir()
File Name                                             Modified             Size
QuickSort.class                                2011-08-10 15:26:47            0

In [43]: z.close()

另外,你可以查看一下zipfile的文档,里面有更多信息。

6

你可以使用arcname这个参数,具体可以查看这个链接:http://docs.python.org/library/zipfile.html#zipfile.ZipFile.write

z.write("directory/QuickSort.class","QuickSort.class")

撰写回答