os.makedirs() 偶尔会失败

3

我有一个程序,在启动时会检查用户提供的输出目录是否存在。如果找不到该目录,该程序会尝试创建它:

if not os.path.exists(path):
  os.makedirs(path)

Path是指像'/mnt/share/path/to/output'这样的标准绝对路径到目录的路径。

它大约有75%的时间会正常工作。剩下25%的时间我要么得到"exception.OSError"错误,要么得到"exception.IOError: [Errno 2] No such file or directory."错误。这两个异常都有相同的错误号和文本。

为什么会这样呢?我不明白它可能是权限相关或其他什么原因——我正在以自己的身份写入我所拥有和控制的目录,而且另外3次中也都是可以正常工作的。每次程序调用之间,我都在相同的位置写入相同的目录,并且递归地删除它进行测试。如果这很重要的话,它是在一个远程共享(NFS)上写入的。

1个回答

0

我猜这是一个竞态条件的问题,请看一下这个答案竞态条件,希望能帮到你。


这如何是竞态条件的一个例子?没有任何东西在竞争访问或创建这个目录树。当程序执行时,该目录已经被删除了。 - jayce
阅读这两个答案,也许可以为您澄清事情。 https://dev59.com/zl0b5IYBdhLWcg3wT_trhttps://dev59.com/TWMk5IYBdhLWcg3wywwU - Nash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接