我最近编写了一个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()
编辑:在aruisdante回答我的问题后,我决定将zname变量更改为
zname =" zip" + fcname +" .zip" #ugly但感谢
答案 0 :(得分:1)
此:
zfile = zipfile.ZipFile(zpath, "w")
在zpath
for f in os.listdir(gpath):
遍历gpath
处的所有文件。由于gpath
也是zpath
的根,因此您刚创建的zip文件将是gpath
中的一个文件。所以它被包含在档案中。您需要将其排除在外:
for f in (filename for filename in os.listdir(gpath) if filename != zname):