makedirs和os的mkdir有什么不同?

Ton*_*oni 45 python linux python-2.7

我很困惑使用这两种os方法来创建新目录.

请给我一些Python的例子.

NPE*_*NPE 80

makedirs() 如果它们不存在,则创建所有中间目录(就像mkdir -p在bash中一样).

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

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

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

但必须使用makedirs来创建"分支":

  • os.makedirs('dirA/dirB') 将工作[整个结构创建]

mkdir如果 dirA已经存在,可以在这里工作,但如果不存在,则会抛出错误.

请注意,与mkdir -pbash 不同,如果叶子已经存在,则任何一个都将失败.

  • os.makedirs(new_path,exist_ok = True)不会抛出异常 (9认同)
  • 这个答案需要编辑,因为如果目录已经存在,`os.makedirs()`会抛出异常,所以它不像`mkdir -p` (4认同)

小智 19

(无法评论,只是添加到NPE的答案.)

在Python3中,os.makedirs有一个默认参数exist_ok=False.
如果你把它设置为True,那么os.makedirs若叶存在抛出任何异常.
(虽然os.mkdir没有这个参数.)

像这样:

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

PS
您可以?在IPython shell中的方法名称前键入,以便快速查看文档.
例如:

>>> import os
>>> ? os.makedirs
Run Code Online (Sandbox Code Playgroud)