压缩单个文件会陷入循环

时间:2016-09-30 09:07:38

标签: zipfile

我正在尝试压缩shapefile。我选择了shapefile栏的所有组件LOCK和.CPG文件。由于某些原因,这些不能上传到我们的网站,并导致问题。

我尝试使用以下代码,但它一直陷入循环并崩溃。我有一个单独的文件夹,可以使用shutil方法很容易地压缩。但是,当我试图识别要压缩的文件时,我必须使用Zipfile模块。

rtc_shp = r"path/to/shp

zip = zipfile.ZipFile(os.path.join(datafolder, "Real_Time_Closures.zip"), "w")

for f in glob.glob(rtc_shp.replace(".shp",".*")):
    if not f.endswith(".lock"):
        if not f.endswith(".cpg"):
            zip.write(f, basename(f))

shutil.make_archive(indivfolder, "zip", indivfolder)

1 个答案:

答案 0 :(得分:0)

我通过创建一个空列表然后将文件名附加到列表来绕过循环。然后我将列表的内容写入zip文件。

zip = zipfile.ZipFile(os.path.join(datafolder, "MMO_Real_Time_Closures.zip"), "w", zipfile.ZIP_DEFLATED)

shp_zip_list = []

for f in glob.glob(rtc_shp.replace(".shp",".*")):
    if not f.endswith(".lock"):
        if not f.endswith(".cpg"):
            shp_zip_list.append(f)

for f in shp_list:
    zip.write(f, basename(f))

zip.close()

shutil.make_archive(indivfolder, "zip", indivfolder)