2017-05-26 8 views
0

だから私は、エラーは、ファイルを抽出することができます前に、あなたはこれにファイルをコピーする必要があります」で、私はそれを解凍しようとすると、Dドライブにファイルをオーバーコピーした後、次のスクリプト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:/') 

を持っています圧縮されたzipフォルダ "です。私は、他のドライブから元のzipファイルを取ることができ、それをちりばめて解凍します。私は手動でdドライブにそれをコピーし、ちょうど良い解凍することができます。それは私がシャットダウンを使ってdドライブにコピーするときにのみ起こります。

+0

多くの場合、 'copy2()'を使用することをお勧めします。https://docs.python.org/2/library/shutil.html#shutil.copy2 – patrick

+0

Patrick私は最初にそれを使用していて、コピーに切り替えました。 –

答えて

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

それはうまくいった。ありがとう –

関連する問題