在ZIP存档中创建的ZIP存档

时间:2014-04-24 17:45:06

标签: python-2.7 zipfile

我最近编写了一个python脚本来选择目录中的某些文件,并将它们保存到该目录中的新存档中。该脚本的作用是,它在新存档中创建重复的存档。我认为它与我使用的arcname和循环有关,但我真的不确定。通过查看我的代码,我确信很明显,我是初学者,所以我相信这里还有很大的改进空间。关于问题在哪里的任何想法?此外,如果您有任何改进代码的建议,请全心全意。

    import os,arcpy,zipfile

inputfc = arcpy.GetParameterAsText(0) # User Inputs Feature Class Path 

desc = arcpy.Describe(inputfc)

fcname = desc.basename

zname =  fcname + ".zip"

gpath = os.path.dirname(inputfc)

zpath = os.path.join(gpath,zname)

zfile = zipfile.ZipFile(zpath, "w")

for f in os.listdir(gpath):
    fpath = os.path.join(gpath, f)
    if f.startswith(fcname):
        zfile.write(fpath,f,compress_type = zipfile.ZIP_DEFLATED)


zfile.close()

these are the files within the new archive

编辑:在aruisdante回答我的问题后,我决定将zname变量更改为

zname =" zip" + fcname +" .zip" #ugly但感谢

1 个答案:

答案 0 :(得分:1)

此:

zfile = zipfile.ZipFile(zpath, "w")

zpath

创建一个新的Zip文件
for f in os.listdir(gpath):

遍历gpath处的所有文件。由于gpath也是zpath的根,因此您刚创建的zip文件将是gpath中的一个文件。所以它被包含在档案中。您需要将其排除在外:

for f in (filename for filename in os.listdir(gpath) if filename != zname):