我有一个 Python 测试套件,可以创建和删除许多临时文件。在 Windows 7 下,shutil.rmtree 操作有时会失败(<1% 的时间)。失败显然是随机的,并不总是在相同的文件上,也不总是以相同的方式发生,但它总是在 rmtree 操作上。这似乎是某种时间问题。这也让人想起 Windows 7 对权限和管理员权限的警惕性提高,但这里没有权限问题(因为代码刚刚创建了文件),并且没有管理员权限。
它看起来也像是两个线程或进程之间的时间问题,但这里也没有并发。
(部分)堆栈跟踪的两个示例:
File "C:\ned\coverage\trunk\test\test_farm.py", line 298, in clean
shutil.rmtree(cleandir)
File "c:\python23\lib\shutil.py", line 142, in rmtree
raise exc[0], (exc[1][0], exc[1][1] + ' removing '+arg)
WindowsError: [Errno 5] Access is denied removing xml_1
File "C:\ned\coverage\trunk\test\test_farm.py", line 298, in clean
shutil.rmtree(cleandir)
File "c:\python23\lib\shutil.py", line 142, in rmtree
raise exc[0], (exc[1][0], exc[1][1] + ' removing '+arg)
WindowsError: [Errno 3] The system cannot find the path specified removing out
在 Windows XP 上,它从未失败过。在 Windows 7 上,它在几个不同的 Python 版本(2.3-2.6,不确定 3.1)上像这样失败。
有人见过这样的事情并有解决方案吗?代码本身在 bitbucket 上对于真正勤奋的人。
最佳答案
希望不大,但是您是否在后台运行任何扫描目录的程序?我在考虑防病毒/备份(也许 Windows 7 内置了类似的东西?我不知道)。从 TortoiseSVN 启动的 TSVNCache.exe 进程中删除/移动文件时,我偶尔会遇到故障——似乎它会监视目录的变化,然后可能会打开它们以扫描文件。
关于python - Windows 7下的片状文件删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2037376/