私はいくつかのサブディレクトリを作成するテストケースに取り組んでいます。ただし、削除する権限がなくなったようです。私の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'
誰かが何が悪いのか知っていますか?
_os.remove
_にはファイルパスが必要で、パスがディレクトリの場合はOSError
が発生します。
os.rmdir(folder+'New Folder')
をお試しください
どちらになります:
ディレクトリパスを削除(削除)します。ディレクトリが空の場合にのみ機能します。それ以外の場合は、OSErrorが発生します。
パスを作成することも_os.path.join
_を使用する方が安全です。
_os.path.join("c:\\", "temp", "new folder")
_
組み込みのshutilモジュールを試してください
shutil.rmtree(folder+"New Folder")
これは、たとえ内容が含まれていても、ディレクトリを再帰的に削除します。
os.remove()
はファイルに対してのみ機能します。ディレクトリでは機能しません。 ドキュメント によると:
os.remove(path)ファイルパスを削除(削除)します。パスがディレクトリの場合、OSErrorが発生します。ディレクトリを削除するには、以下のrmdir()を参照してください。これは、以下で説明するunlink()関数と同じです。 Windowsでは、使用中のファイルを削除しようとすると、例外が発生します。 UNIXでは、ディレクトリエントリは削除されますが、ファイルに割り当てられたストレージは、元のファイルが使用されなくなるまで使用できません。
ディレクトリには os.removedirs()
を使用します
UはShutilモジュールを使用して、dirとそのサブフォルダーを削除できます
import os
import shutil
for dir in os.listdir(folder):
shutil.rmtree(os.path.join(folder,dir))
Python 3.6の場合、ファイル許可モードは0o777である必要があります。
os.chmod(filePath, 0o777)
os.remove(filePath)
フォルダを削除したい場合は、
os.rmdir(path)
ファイルは読み取り専用モードなので、os.chmod()
関数でファイルのアクセス許可を変更してから、os.remove()
で試してください。
例:
ファイルのアクセス許可を0777
に変更してから、ファイルを削除します。
os.chmod(filePath, 0777)
os.remove(filePath)
C:ドライブのサブフォルダーを削除するためにフォルダーを削除できない理由は、管理者権限が必要ですpythonで管理者権限を呼び出すか、次のハックを実行します
次のシェルコマンドで単純な.batファイルを作成する
del /q "C:\Temp\*"
FOR /D %%p IN ("C:\temp\*.*") DO rmdir "%%p" /s /q
これをfile.batとして保存し、pythonファイルからこのbatファイルを呼び出します
BatファイルはC:ドライブからのサブフォルダーの削除を処理します
ディレクトリの場合は、次のように使用します。
os.rmdir("path")