1

ここに私の問題があります。zipfile を受け取り、その内容を抽出する python スクリプトがあります。次に、いくつかの制約に基づいて、コンテンツが抽出されたばかりのフォルダーを削除しようとします。何らかの理由で、そのフォルダーを削除しようとすると、 WindowsError: [Error 5] Access is denied: 'Foldername' というエラーが表示されます。簡単なコードは次のようになります

wzip = zipfile.ZipFile('zipfile.zip')

wzip.extractall()

wzip.close()

os.remove('ExtractedFolder')

これをインタープリターで実行すると、次のようになります。

トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、Windows エラー: [エラー 5] アクセスが拒否されました: 'ExtractedFolder'

私は Windows Vista 32 ビットで Python 2.6 を使用しています。

4

2 に答える 2

4

多くの理由が考えられます。

  1. os.rmdirディレクトリを削除するために使用する必要があります
  2. 最初にフォルダーを空にする必要があります。覚えておいてください。Windows コマンド には内容を削除rmdirするオプションが必要/Sであり、Python はおそらくそれを使用します。
  3. 解凍もアーカイブの属性を使用していますか? 読み取り専用属性を適用できます。
  4. 削除する前に、そのフォルダーから何かを読んでいますか? 閉じていない可能性があります。
  5. Windows では、通常とは異なる文字を含むファイル名で同様の問題が発生する可能性があります
于 2010-09-10T21:30:01.880 に答える
1

Windows で問題が発生する可能性があります。つまり、このディレクトリにファイルが開かれている可能性があります。使用して開いたすべてのファイルを明示的に閉じていることを確認してくださいfile.close()(ただし、サンプル コードは正しく見えます)。

また、 を参照すると便利な場合がありますshutils.rmtree。ディレクトリを再帰的に削除し、エラーをキャプチャできます。

于 2010-09-11T13:14:22.927 に答える