Python 书刊发行

Python 书刊发行,python,Python,所以我有下面的脚本 # 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:

所以我有下面的脚本

# 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驱动器时才会发生这种情况

您需要先关闭zipfile,然后再进行复制。在
shutil.copy
之前执行
zipf.close()
,或者

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

使用
copy2()
通常是个好主意:Patrick我最初使用它,然后切换到copy。