web-dev-qa-db-ja.com

OSのmakedirsとmkdirの違いは何ですか?

これら2つのosmethodsを使用して新しいディレクトリを作成するのは混乱しています。

Pythonの例をいくつか教えてください。

38
Toni

makedirs()すべての中間ディレクトリを作成 存在しない場合(bashの_mkdir -p_と同様)。

mkdir()は単一のサブディレクトリを作成でき、存在しない中間ディレクトリが指定されている場合は例外をスローします。

どちらかを使用して、単一の「リーフ」ディレクトリ(dirA)を作成できます。

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

ただし、「ブランチ」を作成するにはmakedirsを使用する必要があります。

  • os.makedirs('dirA/dirB')は機能します[構造全体が作成されます]

mkdirはここで機能しますifdirAはすでに存在しますが、そうでない場合はエラーがスローされます。

Bashの_mkdir -p_とは異なり、リーフが既に存在する場合はどちらも失敗します。

75
NPE

(コメントすることはできません。NPEの回答に追加するだけです。)

Python3では、_os.makedirs_にはデフォルトパラメータ_exist_ok=False_があります。
_Trueに設定すると、_os.makedirs_はnotリーフが存在する場合に例外をスローします。
(_os.mkdir_にはこのパラメーターはありません。)

ちょうどこのような:

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

追伸.
IPython Shellのメソッド名の前に_?_と入力すると、ドキュメントを簡単に確認できます。
例えば。:

_>>> import os
>>> ? os.makedirs
_
15
Yunqing Gong