高校生物549842 views
MathPython491378 views
Computer365120 views
数学講師2852771 views
いろは2986023 views
中学数学621382 views
小学理科717236 views
高校化学2913383 views
ヒストリア284143 views
高校物理158224 views
Help
Tools

English

Python でディレクトリを作成する(mkdir, makedirs)

ディレクトリを作成するには os.mkdir()os.makedirs()、あるいは pathlib.Path.mkdir() を使う。

単一のディレクトリを作成する

os.mkdir() は単一のディレクトリを作成する。

import os

os.mkdir('newdir')

親ディレクトリが存在しない場合はエラーになる。また、すでにディレクトリが存在する場合も FileExistsError が発生する。

中間ディレクトリも含めて作成する

os.makedirs() を使うと、存在しない親ディレクトリも含めて一度に作成できる。

import os

os.makedirs('parent/child/grandchild')

exist_ok=True を指定すると、ディレクトリがすでに存在してもエラーにならない。

import os

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

pathlib を使う方法

pathlib では Path.mkdir() メソッドでディレクトリを作成する。

from pathlib import Path

Path('newdir').mkdir()

parents=True を指定すると親ディレクトリも含めて作成し、exist_ok=True でディレクトリが存在してもエラーにならない。

from pathlib import Path

Path('parent/child/grandchild').mkdir(parents=True, exist_ok=True)

パーミッションを指定する

mode 引数でディレクトリのパーミッションを指定できる。

import os
from pathlib import Path

# os.makedirs
os.makedirs('secure_dir', mode=0o700)

# pathlib
Path('secure_dir').mkdir(mode=0o700)

0o700 は所有者のみが読み書き実行できる設定だ。ただし、実際のパーミッションは umask の影響を受ける。

安全なディレクトリ作成パターン

ディレクトリが存在しない場合のみ作成する一般的なパターンを示す。

from pathlib import Path

def ensure_dir(path):
    """ディレクトリが存在しなければ作成する"""
    Path(path).mkdir(parents=True, exist_ok=True)

# 使用例
ensure_dir('logs/2024/01')

この方法なら、ディレクトリの有無を事前にチェックする必要がない。

一時ディレクトリを作成する

一時的なディレクトリを作成する場合は tempfile モジュールを使うと、自動的に削除される。

import tempfile

with tempfile.TemporaryDirectory() as tmpdir:
    print(tmpdir)  # /tmp/tmpxxxxxx
    # ここで作業
# with を抜けると自動削除