web-dev-qa-db-ja.com

os.removeでフォルダーを削除できません(WindowsError:[エラー5]アクセスが拒否されました: 'c:/ temp / New Folder')

私はいくつかのサブディレクトリを作成するテストケースに取り組んでいます。ただし、削除する権限がなくなったようです。私のUAは管理者アカウントです(Windows XP)。

私が最初に試しました:

folder="c:/temp/" 
for dir in os.listdir(folder): 
    os.remove(folder+dir)

その後

folder="c:/temp/" 
os.remove(folder+"New Folder")

「新しいフォルダ」は空になっているはずです。しかし、すべての場合で私は得ます:

Traceback (most recent call last): 
  File "<string>", line 3, in <module> 
WindowsError: [Error 5] Access is denied: 'c:/temp/New Folder'

誰かが何が悪いのか知っていますか?

14
Sergio Da Silva

_os.remove_にはファイルパスが必要で、パスがディレクトリの場合はOSErrorが発生します。

os.rmdir(folder+'New Folder')をお試しください

どちらになります:

ディレクトリパスを削除(削除)します。ディレクトリが空の場合にのみ機能します。それ以外の場合は、OSErrorが発生します。

パスを作成することも_os.path.join_を使用する方が安全です。

_os.path.join("c:\\", "temp", "new folder")
_
19
Aesthete

組み込みのshutilモジュールを試してください

shutil.rmtree(folder+"New Folder")

これは、たとえ内容が含まれていても、ディレクトリを再帰的に削除します。

18
appusajeev

os.remove()はファイルに対してのみ機能します。ディレクトリでは機能しません。 ドキュメント によると:

os.remove(path)ファイルパスを削除(削除)します。パスがディレクトリの場合、OSErrorが発生します。ディレクトリを削除するには、以下のrmdir()を参照してください。これは、以下で説明するunlink()関数と同じです。 Windowsでは、使用中のファイルを削除しようとすると、例外が発生します。 UNIXでは、ディレクトリエントリは削除されますが、ファイルに割り当てられたストレージは、元のファイルが使用されなくなるまで使用できません。

ディレクトリには os.removedirs() を使用します

9
8bitwide

UはShutilモジュールを使用して、dirとそのサブフォルダーを削除できます

import os
import shutil

for dir in os.listdir(folder):
    shutil.rmtree(os.path.join(folder,dir))
7
Rakesh

Python 3.6の場合、ファイル許可モードは0o777である必要があります。

os.chmod(filePath, 0o777)
os.remove(filePath)
5

フォルダを削除したい場合は、

os.rmdir(path)
1
a w

ファイルは読み取り専用モードなので、os.chmod()関数でファイルのアクセス許可を変更してから、os.remove()で試してください。

例:

ファイルのアクセス許可を0777に変更してから、ファイルを削除します。

os.chmod(filePath, 0777)
os.remove(filePath)
0
Pradeep S

C:ドライブのサブフォルダーを削除するためにフォルダーを削除できない理由は、管理者権限が必要ですpythonで管理者権限を呼び出すか、次のハックを実行します

次のシェルコマンドで単純な.batファイルを作成する

del /q "C:\Temp\*"

FOR /D %%p IN ("C:\temp\*.*") DO rmdir "%%p" /s /q

これをfile.batとして保存し、pythonファイルからこのbatファイルを呼び出します

BatファイルはC:ドライブからのサブフォルダーの削除を処理します

0
Sushen Sharma

ディレクトリの場合は、次のように使用します。

os.rmdir("path")
0
sofblocks