当我尝试删除非空文件夹时,我收到"访问被拒绝"错误.我在尝试中使用了以下命令:os.remove("/folder_name").
删除/删除非空文件夹/目录的最有效方法是什么?
我试图让python删除一些目录,我得到访问错误.我认为它的python用户帐户没有权限?
WindowsError: [Error 5] Access is denied: 'path'
Run Code Online (Sandbox Code Playgroud)
是我运行脚本时得到的.
我试过了
shutil.rmtree
os.remove
os.rmdir
Run Code Online (Sandbox Code Playgroud)
他们都返回相同的错误.
shutil.rmtree不会删除Windows上的只读文件.有一个python相当于"rm -rf"?为什么哦为什么会这么痛?
有重新创建文件夹的脚本:
# Remove folder (if exists) with all files
if os.path.isdir(str(os.path.realpath('..') + "\\my_folder")):
shutil.rmtree(os.path.realpath('..') + "\\my_folder", ignore_errors=True)
# Create new folder
os.mkdir(os.path.realpath('..') + "\\my_folder")
Run Code Online (Sandbox Code Playgroud)
这几乎总是有效,但在某些情况下(在创建步骤中),我得到了
WindowsError: [Error 5] Access is denied: 'C:\\Path\\To\\my_folder'
Run Code Online (Sandbox Code Playgroud)
什么可能导致此错误,我该如何避免?
我有以下结构:
Dir 1
|___Dir 2
|___file 1
|___file 2...
Dir 3
|___Dir 4
|___file 3...
Run Code Online (Sandbox Code Playgroud)
我希望能够递归地找到每个文件,以我自己的方式处理文件,一旦完成,删除文件,移动到下一个.然后,如果目录是空的,那么删除它,继续向上,直到没有剩下.
只是不知道如何继续.
这就是我所拥有的:
for root, dirs, files in os.walk(dir):
path = root.split('/')
for file in files:
file = os.path.join(root, file)
process_file(file)
os.remove(file)
Run Code Online (Sandbox Code Playgroud)
这很好,但我想删除子目录,只有它们是空的.
我正在使用以下代码删除包含git repo的目录:
import errno
import os
import stat
import shutil
def clear_dir(path):
shutil.rmtree(path, ignore_errors=False, onerror=handle_remove_readonly)
def handle_remove_readonly(func, path, exc):
excvalue = exc[1]
if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
os.chmod(path, stat.S_IRWXU| stat.S_IRWXG| stat.S_IRWXO) # 0777
func(path)
else:
raise
Run Code Online (Sandbox Code Playgroud)
此代码应能很好地处理只读文件。我可以从Windows资源管理器中删除目录/文件夹,但是当我运行以下代码时:
if __name__ == '__main__':
clear_dir(r'c:\path\to\ci-monitor')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
File "C:\Users\m45914\code\ci-monitor\utils\filehandling.py", line 8, in clear_dir
shutil.rmtree(path, ignore_errors=False, onerror=handle_remove_readonly)
File "C:\Users\m45914\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 488, in rmtree
return _rmtree_unsafe(path, onerror)
File "C:\Users\m45914\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 378, in _rmtree_unsafe
_rmtree_unsafe(fullname, onerror)
File "C:\Users\m45914\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 378, in _rmtree_unsafe
_rmtree_unsafe(fullname, …Run Code Online (Sandbox Code Playgroud) python ×6
delete-file ×3
directory ×2
file ×2
windows ×2
git ×1
python-2.7 ×1
recursion ×1
windowserror ×1