永远不要忘掉:跨平台特点是Python的血液和命脉。
在Linux下进程正在使用的文件,是不阻碍其他进程去联通/删掉/改名的。由于在Linux下由inode确定文件,inode和文件路径似乎存在对应关系,但本质上是分离的。删掉了某进程正在使用的文件,则在该进程没有关掉之前,哪怕文件在目录结构中消失了,也一直能被访问到,直至没有任何进程打开了这个文件(inode节点的使用者数目降为0)后才能真正删掉。
这个机制是好多Linux程序可以实现不退出升级的理由:旧程序和依赖库,在旧程序关掉前总是能访问到linux解除文件占用,所以无需关掉。而上次启动时,程序和库刚好就升级成了新的。——你是否习惯了Windows下升级总要“退出正在运行的所有程序”,而对这一点倍感很不可思议呢?
删掉操作能够执行,何时执行linux解除文件占用,说究竟这依赖操作系统的实现,不须要Python在“前端”去做无谓的判别。
被Windows残害的程序员们,醒醒吧linux游戏,世界上有好多优秀的实现,你可以不用linux中文乱码,但不得不知,更不能画蛇添足的去作出一些“对抗”它的举动。
任何不能进行文件操作的状况(比如:权限不许可、文件锁、磁盘满、IO错误等),在Python中都表示为一个异常。请尊重Python的实现方法,先做事,再捕获异常,最后处理。不要做任何无谓的提早判定——因为你有限的防治,绝对覆盖不了所有可能出现的问题!!!