在Windows 7 prof 64位上使用python 2.7的简单测试用例:
通过python我在一个目录中检查一个git项目,比方说,c:/temp/project
。
然后我用python命令删除它
shutil.rmtree('c:/temp/project')
在命令之后,该文件夹为空(没有隐藏文件)但由于以下错误而无法将其自行删除:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\temp\\project'
我已经检查过,git当时没有运行(我甚至试过睡觉(10)确定)。 我试过这个解决方案:
What user do python scripts run as in windows?
但它不起作用,同样的错误。
尝试os.system('rmdir')
但同样的错误。
试过win32api.SetFileAttributes()
函数,但错误相同。
如果我通过资源管理器删除文件夹,则没有问题。
我该如何解决这个问题?
答案 0 :(得分:1)
OP在错误的目录中运行...但是我发现这个线程使用GitPython的问题;似乎是一种常见的情况,因为如果你不以某种奇怪的方式清理,git-python会为你的回购保留句柄:
import gc, stat
gc.collect()
your_repo_obj.git.clear_cache()
# now this will succeed:
shutil.rmtree(your_repo_dir)
这些体操的需要是由于一个错误和设计。这个bug描述了原因:
https://github.com/gitpython-developers/GitPython/issues/553
答案 1 :(得分:-1)
您可能正在尝试删除的文件夹中执行Python代码。