- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有人可以向我解释为什么 shutil.rmtree 抛出错误说目录不为空吗?
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\Python27\lib\threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "W:\__init__.py", line 90, in makePatch
myprog.copy_data()
File "W:\myprog.py", line 143, in copy_data
self.cleanupTempDir()
File "W:\myprog.py", line 138, in cleanupTempDir
shutil.rmtree(self.TEMP_DIR)
File "C:\Python27\lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Python27\lib\shutil.py", line 256, in rmtree
onerror(os.rmdir, path, sys.exc_info())
File "C:\Python27\lib\shutil.py", line 254, in rmtree
os.rmdir(path)
WindowsError: [Error 145] The directory is not empty: u'e:\\PatchData\\Data'
最佳答案
Linux:我在处理临时文件夹时也遇到了这个错误:我在 __init__
构造函数中调用了 os.makedirs
和 __del__
解构器中的 shutil.rmtree
调用,该代码使用了 multiprocessing
库;该文件夹是按顺序构建的,但只要进程终止执行就被销毁。因此,该错误并不总是可重现的,但据推测,只有当两个进程试图同时销毁该文件夹并且没有适当的锁定机制时,才会抛出这些错误。发生这种情况是因为出于某种未知原因,多次调用了 __del__
解构函数。
错误如下:
Exception ignored in: <function VideoMaker.__del__ at 0x7f6066a888b0>
Traceback (most recent call last):
File "VideoMaker.py", line 49, in __del__
onerror(os.unlink, fullname, sys.exc_info())
File "/home/Marco/miniconda3/lib/python3.8/shutil.py", line 670, in _rmtree_safe_fd
onerror(os.rmdir, path, sys.exc_info())
File "/home/Marco/miniconda3/lib/python3.8/shutil.py", line 717, in rmtree
_rmtree_safe_fd(fd, path, onerror)
shutil.rmtree(self.temp_videoclip_dir)
File "/home/Marco/miniconda3/lib/python3.8/shutil.py", line 672, in _rmtree_safe_fd
File "/home/Marco/miniconda3/lib/python3.8/shutil.py", line 715, in rmtree
onerror(os.unlink, fullname, sys.exc_info())
File "/home/Marco/miniconda3/lib/python3.8/shutil.py", line 670, in _rmtree_safe_fd
os.unlink(entry.name, dir_fd=topfd)
FileNotFoundError: [Errno 2] No such file or directory: '12.mp4'
或者
OSError: [Errno 39] Directory not empty: 'tmp/tmp.videoclips/'
__del__
解构器中使用 rmtree
:对象解构器可能并不总是具有可预测的行为,因此避免在内部使用操作系统的 IO 操作。创建一个单独的函数,并在对象范围的末尾调用它。
LOCK
文档:
文档示例: Synchronization between processes
l.acquire()
try:
if os.path.isdir(path_to_delete):
shutil.rmtree(path_to_delete)
finally:
l.release()
def try_to_rmtree(can_still_retry):
if can_still_retry:
try:
if os.path.isdir(path_to_delete):
shutil.rmtree(path_to_delete)
except:
try_to_rmtree(can_still_retry -1)
can_still_retry = 5
try_to_rmtree(can_still_retry)
关于python shutil.rmtree 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109244/
我正在尝试删除此路径中的文件夹和文件:“Users/ryanunderwood/Desktop” 这是我的代码: import shutil shutil.rmtree('Users/ryanunde
我尝试在析构函数中删除创建的目录: shutil.rmtree("C:\\projects\\project_alpha\\tmp") 它不适用于我的 python 脚本,但是当我通过 python
我有一个类,该类使用 shutil.rmtree 来删除一些文件,如果参数被传递为 true,如何模拟此行为,以便其他测试不会中断需要这些文件。 我的类(class)是这样的—— class File
有人可以向我解释为什么 shutil.rmtree 抛出错误说目录不为空吗? Traceback (most recent call last): File "C:\Python27\lib\th
我目前有一个Python 程序在完成删除执行时创建的大量文件时调用shutil.rmtree。此调用大约需要 20 多秒。我已经使用 cProfile 对此进行了分析,几乎所有时间都花在了 posix
我在 Python (2.7) 中使用 shutil 的 rmtree 方法。 调用此方法时可能发生的所有异常是什么? 最佳答案 根据实现,您必须检查OSError。但是您可以在调用时使用参数 ign
我正在使用 shutil.rmtree 删除目录,但在该树中创建文件的其他进程(我不控制)无法创建文件,因为目录不存在。有没有像 shutil.rmtree 这样简单的只删除文件但保留目录结构的东西?
我想在 Python 中使用 shutil.rmtree 来删除目录。有问题的目录包含一个 .git 控制目录,git 将其标记为只读和隐藏。 只读标志导致 rmtree 失败。在 Powershel
如果我调用 shutil.rmtree('/') 我会破坏我的整个驱动器还是该函数对这种情况有内部检查? 最佳答案 rmtree 里面没有任何特殊的逻辑。如果您有 / 的权限(例如,该程序由 root
我已经阅读了这个函数的文档,但是,我认为我没有正确理解它。如果有人可以告诉我我缺少什么,或者我是正确的,那将是一个很大的帮助。这是我的理解: 使用 shutil.rmtree(path) 函数,它只会
我是一个 python 新手(到目前为止,我只精通 bash 脚本),我有一个关于递归和 shutil.rmtree 的问题。 所以,我有以下代码片段... keepthese = ('dir1',
我去查看如何在 Python 中删除目录,并被引导使用 shutil.rmtree() .与我对 rm --recursive 的期望相比,它的速度让我感到惊讶。除了使用 subprocess 之外,
我正在尝试删除给定路径上的所有目录,如果它们包含某个文件。 #!/usr/bin/perl use strict; use File::Find; use File::Path qw( rmtree
我正在尝试删除给定路径上的所有目录,如果它们包含某个文件。 #!/usr/bin/perl use strict; use File::Find; use File::Path qw( rmtree
目标是: 如果不存在则创建一个文件夹 删除文件夹所有项目(如果存在)然后创建一个新的空文件夹 search_dir = path.join(...,..., 'My_Folder') rmtree(s
考虑这个测试 import shutil, tempfile from os import path import unittest from pathlib import Path class Te
所以我正在构建一个简单的脚本,将某些文档备份到我的第二个硬盘驱动器(你永远不知道会发生什么!)。因此,我使用 shutil.copytree 函数将我的数据复制到第二个驱动器上。它工作得很好,这不是问
尝试使用 python 脚本自动删除文件,我得到: Traceback (most recent call last): Python script "5", line 8, in sh
我正在尝试将文件夹删除后复制到另一个文件夹: for i in range(0,3): try: dir_util.remove_tree("D:/test2") # sh
在 Windows 7 prof 64 位上使用 python 2.7 的简单测试用例:通过 python,我在一个目录中 checkout 一个 git 项目,比方说,c:/temp/project
我是一名优秀的程序员,十分优秀!