python - os.mkdir(path) 在目录不存在时返回 OSError

标签 python system mkdir

我正在调用 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 是不安全的一样。

正如其他人指出的那样,较新版本的 Python 提供了 os.makedirs() 仅在目录不存在时才尝试创建它,相当于 mkdir -p来自unix命令行。

关于python - os.mkdir(path) 在目录不存在时返回 OSError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18973418/

相关文章:

python - 将具有给定 C header 的深层嵌套结构解包到字典中?

python - 如何使用纯 Python 创建 BMP 文件?

python - 如何使用另一个数组更改一个数组的内容?

Windows系统文件哈希数据库

macos - mkdir -pv 不详细

python - 如何在不使用列表的情况下转换字符串中的数字?

ruby - 从 Ruby 脚本运行 Linux 系统命令

c - inode 中的 block 号是什么意思?

Php mkdir( ) 异常处理

php - 似乎无法在 PHP 中获得 mkdir() 的正确权限