我正在调用 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/