- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在构建一个相对简单的应用程序,它请求目录,检查它们是否正确,然后删除其中一个并使用另一个目录的内容重新创建它。我遇到了这种奇怪的行为,我会尝试解释:
当我打开目标文件夹窗口并且它是空的时,出现拒绝访问异常,然后我被踢出文件夹并被删除。但是如果它不为空,它就可以正常工作,没有异常(exception),目标目录(看起来)被清空,然后用源目录中的文件填充。这很奇怪,因为无论如何它都应该直接删除目标文件夹,然后使用与源目标相同的名称和内容重新创建它。
这对我来说没有意义,当我浏览目录时,当目录不为空时,不应该出现与目录为空时完全相同的异常吗?有什么区别,它仍然应该只是删除文件夹。对此有什么合乎逻辑的解释吗?另外,如果有异常,为什么目录还是被删除了?
这个特定部分的代码非常简单(请记住我是初学者:))
def Delete(self, dest):
try:
shutil.rmtree(dest)
self.Paste(self.src, dest)
except (IOError, os.error) as e:
print e
def Paste(self, src, dest):
try:
shutil.copytree(src, dest)
except (IOError, os.error) as e:
print e
最佳答案
这是 Windows 上的预期行为。
在内部 shutil.rmtree
调用 Windows API 函数 DeleteFile
,该函数记录在 MSDN ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa363915%28v=vs.85%29.aspx ) 上。
此函数具有以下属性(由我突出显示):
The DeleteFile function marks a file for deletion on close. Therefore, the file deletion does not occur until the last handle to the file is closed. Subsequent calls to CreateFile to open the file fail with ERROR_ACCESS_DENIED.
如果任何其他进程仍有打开的句柄(例如病毒扫描程序、Windows 资源管理器,因为您查看目录或任何其他可能仍然有该目录句柄的东西),它不会消失。
通常你只是在粘贴操作中捕获异常并重试几次/几十毫秒,以处理所有那些奇怪的病毒扫描程序异常。
一点好处:您可以使用 windbg 或 ProcessExplorer 来找出谁仍然保留着您的文件的打开句柄(只需在 Process Explorer 中使用 Find Handle 并搜索文件名)。
关于python - 谁能解释 shutil.rmtree 和 shutil.copytree 的这种奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27625683/
shutil.move(src, dest) 方法是否调用 os.system() 方法或 bash 命令“mv”和“cp”? P.S : 我在网上搜索但找不到任何有用的信息。 最佳答案 使用来源卢克
我正在构建一个相对简单的应用程序,它请求目录,检查它们是否正确,然后删除其中一个并使用另一个目录的内容重新创建它。我遇到了这种奇怪的行为,我会尝试解释: 当我打开目标文件夹窗口并且它是空的时,出现
我正在尝试在Python中使用shutil模块。我想将文件夹 ('movee') 从我的 cwd 复制到 'D' 驱动器。代码如下: import shutil shutil.copytree('mo
我有一个很大的图像数据集(大约 3000 个文件)。我的问题很简单,我想将随机选择的图像文件复制到另一个目的地。我使用 random.sample 选择五百张图片并将它们的名称存储在列表中。我现在想将
昨天,根据一位海报的出色建议,我开始使用 shutil.copyfileobj 方法制作文件副本。 我的程序应该制作文件的精确副本,删除最后一个字节并保存新副本。 我昨晚用一些非常小的 ASCII 文
我有一个文件夹,里面有照片,我想将照片从那个文件夹移动到另一个文件夹。文件: IMAG_01.JPG IMAG_02.JPG IMAG_03.JPG IMAG_04.JPG IMAG_05.JPG I
我正在尝试对shutil.copyfileobj()函数进行猴子修补,以便将其默认长度从16*1024更改为更大的值(128*1024)。在内部,其他 Shutil 方法(如 move)调用 copy
我想移动很多文件。这些文件的路径存储在列表中。我想保留整个目录结构,但想将它们移动到不同的文件夹。 例如文件是D:\test\test1\test1.txtD:\test\test1\test2.tx
尝试处理我的第一个脚本的新 Python 开发人员。目标是编写一个应用程序,通过根据文件类型将文件放入子文件夹来清理我的下载文件夹。 这是我的代码: import shutil import os d
我正在尝试编写一个简单的 python 脚本来移动文件,因为它们进入 ubuntu 中的文件夹。 我正在将文件从我的本地机器移动到我的网络 ubuntu 机器。 请参见下面的代码: f
编程的新手,使用 Python 和“艰难地学习 Python”深入研究它。 出于某种原因,我无法使用 shutil.copy 来复制文件。在我的桌面上,我目前有一个文件“test1.txt”和另一个“
https://docs.python.org/3/library/shutil.html#shutil.move说 If the destination is on the current file
根据http://docs.python.org/library/shutil.html使用这些方法不会复制元数据,包括所有权、ACL 和资源分支。使用基本文件读取方法打开文件并将其逐行写回重复文件是
整个晚上都在为此奋斗。三天前还可以工作,现在我再也无法让它工作了。 当我尝试使用这个时 def unzip_file(archiveFile, finalFolder, archiveFolder)
[编辑:请参阅下面的最终代码]我使用下面的代码从源目录中随机选择 5 个文件,然后将它们复制到新目录。它给了我一个 IO 错误,其中显示“不存在这样的文件或目录‘x’”,其中“x”是不带目录路径的文件
我尝试在析构函数中删除创建的目录: shutil.rmtree("C:\\projects\\project_alpha\\tmp") 它不适用于我的 python 脚本,但是当我通过 python
我想使用函数 shutil.copytree 从我的计算机上的本地服务器复制文件夹,我使用的是 macOS,但今天我遇到了问题,python 总是向我显示相同的消息,“[错误 1] 操作不允许”,但是
我正在尝试使用 python 删除目录,但我不想在此过程中递归删除整个目录路径:即 /home/dir/dir/dirtoberemoved 所以我不想删除更高级别的任何内容,只是一个目录及其所有内容
我正在使用 shutil.copy 将一个文件的内容复制到另一个文件。然而,它导致我的原始文件被删除,并出现“文件中没有数据”的错误 我第一次尝试这个 import shutil sh
我有一个代码,用于将所有 jpg 文件从源移动到目标。代码第一次运行良好,它移动了文件,但如果我再次运行它,它会给出一个文件已存在的错误。 Traceback (most recent call la
我是一名优秀的程序员,十分优秀!