26

私はいくつかのサブディレクトリを作成するテストケースに取り組んでいます。しかし、私にはもうそれらを削除する許可がないようです。私の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'

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

4

11 に答える 11

35

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

試すos.rmdir(folder+'New Folder')

どちらが:

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

パスを作成することも、次を使用してより安全os.path.joinです。

os.path.join("c:\\", "temp", "new folder")
于 2012-07-24T06:18:50.797 に答える
27

組み込みの shutil モジュールを試す

shutil.rmtree(folder+"New Folder")

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

于 2012-07-24T06:47:26.880 に答える
7

U Shutilモジュールを使用して、ディレクトリとそのサブフォルダーを削除できます

import os
import shutil

for dir in os.listdir(folder):
    shutil.rmtree(os.path.join(folder,dir))
于 2012-07-24T06:54:52.133 に答える
0

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

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

del /q "C:\Temp\*"

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

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

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

于 2018-09-18T05:56:16.520 に答える