2016-05-26 18 views
0

ファイルを解凍して元のファイルを削除するPythonコードがありますが、コードが例外をキャッチします:ファイルが使用中であるため削除できません。元のファイルをPythonで解凍した後に削除する方法

私は、削除コードが実行されるとき、解凍アクションが完了していないため、例外がスローされるという問題があると思います。では、ファイルを削除する前にunzipアクションの実行状態を確認するにはどうすればよいですか?

file = zipfile.ZipFile(lfilename) 
for filename in file.namelist(): 
    file.extract(filename,dir) 
remove(lfilename) 

答えて

1

ファイルを削除する前に閉じてください。

file = zipfile.ZipFile(lfilename) 
for filename in file.namelist(): 
    file.extract(filename,dir) 

file.close() 

remove(lfilename) 
+0

は、それが行われています、ありがとうございました。 – Tim

4

ZIPファイルのドキュメントは言う:

ZIPファイルには、コンテキストマネージャであるため、with文をサポートしています。だから、

、私は次のことをやってお勧めします:文で使用するの

with zipfile.ZipFile(lfilename) as file: 
    file.extract(filename, dir) 
remove(lfilename) 

一つの利点は、ファイルが自動的に閉じられていることです。それはまた美しい(短い、簡潔、効果的)。

PEP 343も参照してください。

+0

ありがとうございます、より良い方法です。 – Tim

1

ファイルを閉じる必要があります。

file.close() 
    remove(lfilename) 

別の方法としては、次の操作を行うことができます:

with ZipFile('lfilename') as file: 
    for filename in file.namelist(): 
     file.extract(filename,dir) 
remove(lfilename) 
+0

ありがとうございます、より良い方法です。 – Tim

関連する問題