2024-09-28 21:06:39 发布
网友
我有这样的项目设置
project/src/test/python/main.py project/test-output
我想删除主测试脚本,然后重新创建测试输出文件夹。
所以我把代码放在那里。
但当我用
d:\projects\thisproject>python src\test\python\main.py
我收到来自windows的“拒绝访问”错误。[错误5]
怎么解决这个问题?
mkdir命令工作得很好很难。
最有可能的是使用文件夹-打开位于该文件夹内的文件,或者将该文件夹或其子文件夹作为其当前工作目录。在
Windows只将文件/目录标记为“关闭时删除”,与Unix不同,取消链接会立即从视图中删除项目。请参阅MSDN中的Remove Directory函数的文档。因此,如果任何进程(例如浏览器窗口、全文索引器或病毒扫描程序)仍有打开的文件句柄,则失败。在
因此,即使在删除时忽略错误,您也将在os.mkdir步骤中失败。一个简单的修复方法是不重新创建目录,而只是删除其所有内容。另一种方法是等待几秒钟后重试该操作。在
os.mkdir
绕过这个限制的最好方法是每次运行使用不同的输出文件夹(通过tempfile.makedtemp())。当最后一个引用消失时,delete-than就会启动,但是您的重新创建永远不会失败。在
tempfile.makedtemp()
我最近看到了舒蒂尔.rmtree()我自己在Windows7下,也是在从单元测试中创建和销毁测试文件夹时。而且,不,没有对目录或其中任何内容的活动引用,甚至没有资源管理器窗口。我的“解决方案”(如果你可以这么说)是:
shutil.rmtree("my/test/dir", ignore_errors=True)
不完全是一件美丽的事情,但它为我解决了问题。在
顺便说一句,这是一台64位的Windows7机器,在一个固态硬盘上。一位同事报告了与舒蒂尔.rmtree()删除另一台计算机上Windows共享上的目录时。我有一种感觉,Windows正在这里缓存一些东西,如果只是短暂的。在
最有可能的是使用文件夹-打开位于该文件夹内的文件,或者将该文件夹或其子文件夹作为其当前工作目录。在
Windows只将文件/目录标记为“关闭时删除”,与Unix不同,取消链接会立即从视图中删除项目。请参阅MSDN中的Remove Directory函数的文档。因此,如果任何进程(例如浏览器窗口、全文索引器或病毒扫描程序)仍有打开的文件句柄,则失败。在
因此,即使在删除时忽略错误,您也将在
os.mkdir
步骤中失败。一个简单的修复方法是不重新创建目录,而只是删除其所有内容。另一种方法是等待几秒钟后重试该操作。在绕过这个限制的最好方法是每次运行使用不同的输出文件夹(通过
tempfile.makedtemp()
)。当最后一个引用消失时,delete-than就会启动,但是您的重新创建永远不会失败。在我最近看到了舒蒂尔.rmtree()我自己在Windows7下,也是在从单元测试中创建和销毁测试文件夹时。而且,不,没有对目录或其中任何内容的活动引用,甚至没有资源管理器窗口。我的“解决方案”(如果你可以这么说)是:
不完全是一件美丽的事情,但它为我解决了问题。在
顺便说一句,这是一台64位的Windows7机器,在一个固态硬盘上。一位同事报告了与舒蒂尔.rmtree()删除另一台计算机上Windows共享上的目录时。我有一种感觉,Windows正在这里缓存一些东西,如果只是短暂的。在
相关问题 更多 >
编程相关推荐