Python shutil.rmtree:无法在win7上删除git目录

时间:2014-02-14 11:37:02

标签: python git windows-7 directory

在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()函数,但错误相同。 如果我通过资源管理器删除文件夹,则没有问题。

我该如何解决这个问题?

2 个答案:

答案 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代码。