2016-09-30 48 views
0

我想壓縮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) 

回答

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)