压缩文件有额外的不需要的文件夹

时间:2013-05-29 15:32:14

标签: python python-2.7 zipfile arcpy

我在使用zipfile.Zipfile()函数时遇到了问题。它正确地压缩我的文件,但是在输出zip文件中有我不想要的额外文件夹。它确实将所有我想要的文件放在.zip中,但它似乎默认添加了.zip文件中写入的文件中的最后几个目录。有没有办法排除这些文件夹?这是我的代码:

import arcpy, os
from os import path as p
import zipfile
arcpy.overwriteOutput = True


def ZipShapes(path, out_path):
    arcpy.env.workspace = path
    shapes = arcpy.ListFeatureClasses()

    # iterate through list of shapefiles
    for shape in shapes:
        name = p.splitext(shape)[0]
        print name
        zip_path = p.join(out_path, name + '.zip')
        zip = zipfile.ZipFile(zip_path, 'w')
        zip.write(p.join(path,shape))
        for f in arcpy.ListFiles('%s*' %name):
            if not f.endswith('.shp'):
                zip.write(p.join(path,f))
        print 'All files written to %s' %zip_path
        zip.close()

if __name__ == '__main__':

    path = r'C:\Shape_test\Census_CedarCo'
    out_path = r'C:\Shape_outputs'

    ZipShapes(path, out_path)

我试图张贴一些照片,但我没有足够的声望点。基本上它是在zip文件中添加2个额外的文件夹(空)。所以不是像拉链里面的文件那样:

C:\Shape_outputs\Public_Buildings.zip\Public_Buildings.shp

他们是这样出现的:

C:\Shape_outputs\Public_Buildings.zip\Shape_test\Census_CedarCo\Public_Buildings.shp

“Shape_test”和“Census_CedarCo”文件夹是我试图复制的shapefile来自的目录,但如果我只是编写这些文件,为什么子目录也被复制到zip文件中?我认为这不是一件大事,因为我把文件压缩了,但它比任何东西都更令人烦恼。

我认为在创建zip文件时,它只会编写我自己指定的文件。为什么在zip文件中添加这些额外的目录?有办法解决吗?我在这里错过了什么吗?我感谢任何输入!感谢

1 个答案:

答案 0 :(得分:3)

ZipFile.write(filename[, arcname[, compress_type]])中的可选第二个参数是存档文件中使用的名称。您可以从路径前面剥离有问题的文件夹,并使用余数作为存档路径名称。我不确定arcpy如何为你提供路径,但像zip.write(p.join(path,shape), shape)这样的东西应该这样做。