2017-05-26 66 views
0

所以,我有以下腳本shutil複製問題

# Import system modules 
import arcpy, os 
import fnmatch 
import shutil 
import zipfile 

zipf = zipfile.ZipFile('MXD_DC.zip', 'w', zipfile.ZIP_DEFLATED) 
    for root, dirs, files in os.walk(r"Y:\Data\MXD_DC"): 
     for file in files: 
      zipf.write(os.path.join(root, file)) 

shutil.copy(r'MXD_DC.zip', 'D:/') 

將文件複製到d盤,當我試圖把它解壓後,錯誤是「之前,你可以提取文件,必須將文件複製到該壓縮的壓縮文件夾「。我可以從其他驅動器中取出原始zip文件並解壓縮。我可以手動將它複製到d盤並解壓縮就好了。只有當我使用shutil複製到d驅動器時纔會發生。

+0

使用'copy2()'通常是一個好主意:https://docs.python.org/2/library/shutil.html#shutil.copy2 – patrick

+0

帕特里克我最初使用它,然後切換到複製。 –

回答

1

您需要在複製之前先關閉zip文件。無論zipf.close()shutil.copy

with zipfile.ZipFile('MXD_DC.zip', 'w', zipfile.ZIP_DEFLATED) as zipf: 
    for root, dirs, files in os.walk(r"Y:\Data\MXD_DC"): 
     for file in files: 
      zipf.write(os.path.join(root, file)) 

shutil.copy2('MXD_DC.zip','D:/') 

你也可以再次使用shutil.copy2

+0

這工作。謝謝 –