为什么os.remove(-string-)
对我不起作用?我把代码写如下:
try:
os.remove(a)
output = current_time() + "\trmv successful"
message = message + '\n' + output
message = "".join(message)
return message
except OSError:
try:
os.removedirs(a)
output = current_time() + "\trmv successful"
message = message + '\n' + output
message = "".join(message)
return message
except OSError:
output = current_time() + "\trmv failed: [?]"
message = message + '\n' + output
message = "".join(message)
return message
每次我在客户端执行rmv
命令时,它都会返回21:32:53 rmv failed: [?]
。如果有帮助的话,我的Python版本是2.6.1。
例外情况是有看!检查这个:
修改代码以显示错误消息,您将知道它失败的原因。The docs可以帮你。
尝试放置一些延迟时间。打开/删除文件后睡眠(0.2)或 似乎是windows和/或防病毒问题
Josh Rosenberg关于python开发中的this错误跟踪指出了同样的问题:
简短版本:索引和反病毒工具防止删除发生。
较长版本: DeleteFile(以及所有最终转移到DeleteFile的东西)在Windows上以一种有趣的方式运行。在内部,它打开文件的句柄,将其标记为挂起删除,然后关闭句柄。如果在此期间没有人偷偷进入并获取该文件的另一个句柄,则在关闭DeleteFile的隐藏句柄时将删除该文件。精心设计的反病毒/索引工具使用oplock(http://blogs.msdn.com/b/oldnewthing/archive/2013/04/15/10410965.aspx)以便打开文件,但如果正常进程需要独占控制或删除文件,则可以无缝地避开它。遗憾的是,“精心设计”并不是一个通常与反病毒工具相关联的术语,因此类似这样的错误相对来说比较常见。
使用GetTempFileName()和move file()将文件移到一边这样的解决方案会起作用,尽管我相信它们会引入自己的竞争条件(临时文件本身是创建的,但句柄会立即关闭,这可能意味着坏的反病毒程序会阻止MoveFile()打开空文件)。
基本上,如果您在Windows上运行,并且使用的是不友好的反病毒/索引工具,那么就没有保持相同行为的干净解决方法。如果不冒访问被拒绝错误的风险,您不能一遍又一遍地创建和删除同名文件。
也就是说,只打开和关闭一次文件可能会得到相同的结果。更改原始伪代码:
你为什么不把错误打印出来?
错误可能是你看到的任何东西。。。例如权限问题?
相关问题 更多 >
编程相关推荐