2017-05-26 45 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

这工作。谢谢 –