当前位置: 首页 > 面试题库 >

当目录不存在时,os.mkdir(path)返回OSError

虞高雅
2023-03-14
问题内容

我打电话os.mkdir来创建一个文件夹,其中包含一组特定的生成数据。但是,即使尚未创建我指定的路径,也会os.mkdir(path)引发该路径已存在的OSError。

例如,我打电话:

os.mkdir(test)

OSError: [Errno 17] File exists: 'test'即使我在任何地方都没有测试目录或名为test的文件,也会导致此调用。

注意:我使用的实际路径名不是“ test”,而是更确定的东西,我确定它没有在任何地方命名。

请帮忙?


问题答案:

格雷格的答案是正确的,但还远远不够。 OSError具有次错误条件,并且您不想每次都抑制它们。谨慎捕获 预期的 操作系统错误是明智的。

在决定抑制该异常之前,请进行其他检查,如下所示:

import errno
import os

try:
    os.mkdir(dirname)
except OSError as exc:
    if exc.errno != errno.EEXIST:
        raise
    pass

您可能不想抑制errno.EACCES(权限被拒绝),errno.ENOSPC(设备上没有剩余空间),errno.EROFS
(只读文件系统)等。或者也许您确实想要-但这需要根据特定情况做出有意识的决定。您正在构建的逻辑。

Greg的代码抑制了所有操作系统错误;就像except Exception不安全一样,这是不安全的。



 类似资料:
  • 问题内容: 我有2张桌子- : 第二张桌子- : 我只需要选择未取消的预订(在此示例中仅为ID 3)。我可以轻松地选择带有简单条件的已取消,但由于未在此处取消工作,因此我在努力避免未取消。 问题答案: 要么: 第一个版本更直观,但是我认为第二个版本通常可以获得更好的性能(假设您在联接中使用的列上有索引)。 第二个版本有效,因为返回第一个表中所有行的一行。当条件成功,这些行会包括从第二表中的列,就像

  • 我试图通过使用基于索引的行位置简单地获得df的子集。但是,出于某些原因,以下代码有时返回空数据帧: dist数据帧(帧是索引): 输出: 我一辈子都不明白为什么会发生这种事。

  • 首先,我知道这个查询有点混乱,但它可以正常工作,直到至少有一条记录存在,并且设置为true,此时没有返回任何记录。如果有另一条记录的设置为false或两者的组合,则它可以正常工作,即返回的记录的所有票证总数都设置为0或适当的值。 我已将查询更新为,并将票证表联接更改为left(也尝试了full outer),但它仍然存在上述问题。 为什么会发生这种情况,我能做些什么来防止它?

  • 问题内容: 我试图获取通过终端机(Mac)设置的环境变量的值,同时还在.bash_profile文件中设置该变量并重新加载。这样做之后,我回显了该值,并在终端上打印了正确的值。尝试检索变量的值时(我确保在.bash_profile文件中以及在使用时都使用了正确的名称。 在下面的代码中,我用 VAR_NAME 替换了变量的名称: 在我的.bash_profile中: 当我打印出的值时,将打印“ nu

  • 我正在尝试检索电子表格的pdf。无论何时尝试,都会出现以下错误: 对的请求失败https://docs.google.com/a/firstcallres.com/spreadsheets/d/1ZPcW5cOQT5w28VUbr_JG9U-r7m6Uf-MDQcSmFOyhbE8/export?exportFormat=pdf 如果我在登录时单击上述URL,则会下载PDF。 如果我使用以下代码,

  • 我正在创建一个允许调整gif大小的小类。为此,我创建了一个包含所有帧的临时目录,调整它们的大小,然后再次创建gif。 创建gif后,我想删除我的临时目录。但一旦我的所有文件都被删除,我就会出现以下错误: 警告:目录不为空 这是我的密码: 这是我得到的: 正如您所看到的,没有隐藏文件,因为scandir没有返回任何文件<如你所见,我尝试了这个解决方案,但没有成功 我可以手动删除它,一旦代码完成,里面