makedirs和os的mkdir有什么不同?

时间:2012-12-11 11:33:07

标签: python linux python-2.7

我很难使用这两个os方法来创建新目录。

请给我一些Python的例子。

2 个答案:

答案 0 :(得分:71)

makedirs() creates all the intermediate directories如果它们不存在(就像bash中的mkdir -p一样)。

mkdir()可以创建单个子目录,如果指定了不存在的中间目录,则会抛出异常。

可以用来创建一个'leaf'目录(dirA):

  • os.mkdir('dirA')
  • os.makedirs('dirA')

但必须使用makedirs创建“分支”:

  • os.makedirs('dirA/dirB')将[创建整个结构]
如果 mkdir已经存在,

dirA可以在此工作,但如果不存在,则会抛出错误。

请注意,与bash中的mkdir -p不同,如果叶子已经存在,则任何一个都将失败。

答案 1 :(得分:14)

(无法发表评论,只需添加到NPE的回答中。)

在Python3中,os.makedirs有一个默认参数exist_ok=False 如果您将其设置为True,那么os.makedirs在叶子存在时抛出任何异常。
(虽然os.mkdir没有此参数。)

就像这样:

os.makedirs('dirA', exist_ok=True)

P.S。
您可以在IPython shell中的方法名称前键入?,以便快速查看文档 e.g:

>>> import os
>>> ? os.makedirs