【发布时间】:2019-10-02 04:18:13
【问题描述】:
我有一个脚本可以在共享位置清理超过 14 天的日志。现在这个脚本可以从不同的主机同时运行。在特定情况下,如果两个或多个主机尝试清理同一个文件,只有一个会成功,而所有其他主机都会出现错误“没有这样的文件或目录”。如果文件突然丢失,我如何更新代码以忽略优雅清理。下面是执行清理的部分代码。 count 跟踪删除的文件数。
if os.stat(filename).st_mtime < current_time - 14 * 86400:
try:
os.remove(filename)
count += 1
except:
logger.warning("Not able to delete the file %s" % filename)
一种方法是如果文件不存在则“通过”异常,但如果您无法删除该文件,则继续记录警告。如何包含此条件。
【问题讨论】:
-
我想
os.stat()会引发异常?如果是这样,你可以把它移到 try-except 中。或者,您可以使用os.path.exists预先检查文件是否存在。 -
@Mark 如果两个主机通过 if 循环该文件存在并且都试图删除它?
-
是的,这很好。所以最好的做法是使用 try-except 捕获异常。
标签: python exception python-2.x