此代码有效。我在一个单元测试中使用它,其中快速创建和销毁约 100 个文件和文件夹。
如果我取出 sleep() 语句,则会收到一系列 Windows 错误,例如 Directory 不存在错误和 Directory Permissions 错误。
我对包含睡眠信息感到尴尬——这似乎是一个相当丑陋的“黑客”。显然,在我的目标系统上,我不知道 sleep(1) 是正确的值。什么是不依赖于任意一秒延迟的正确成人解决方案(最终系统有时会负载很重)?
def removeDirectoryBranch(myPath):
# delete a directory path and the files/folders in that directory
sleep(1) # give the OS time to sort itself out
for root, dirs, files in walk(myPath, topdown=False):
# safety check removed for for this question
# limits the scope of the function
for name in files:
remove(join(root, name))
for name in dirs:
rmdir(join(root, name))
rmdir(myPath)
在 Windows 7 上运行的 Python 3.3(使用 Eclipse 和 PyDev)
前面的代码在 unittest 类的“teardown”方法中。所有文件都正确打开和关闭(在 try/except/finish 结构中)
尽管 unitttest 每次都以相同的方式运行(大多数情况下它不需要睡眠),但问题是随机发生的。