Python Zipfile目录也被复制

3

我正在尝试使用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个回答

6

好的,看起来工作正常。不过这里还有一个小问题:我使用QInputDialog获取.class文件的路径如果路径是'H:/Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class'那么我该如何从中获取arcname呢? - tgoossens

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文档


好的,看起来工作正常。但是我这里还有一个小问题:我使用QInputDialog获取.class文件的路径,如果路径是'H:/Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class',那么我该如何从中获取arcname呢? - tgoossens
如果路径设置为'H:/Documenten van Walter/Documenten/Python/PyComplexity/src/jar/someclass.class',那么你可以像这样使用os.path的方法:arcname = os.path.basename(os.path.abspath(path)) - sandinmyjoints

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()      

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接