我一直在使用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文件中。因此,文件不像这样直接放在zip中:
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文件内添加这些额外的目录呢?有没有办法避免这种情况?我是否漏掉了什么?感谢任何帮助!谢谢。”