Pythonでディレクトリを作成する方法(mkdir, makedirs)
Pythonのmkdir、makedirsでディレクトリを作成する方法について解説します。
この記事では、Pythonでディレクトリ(フォルダ)を作成する方法について解説します。
Pythonでディレクトリを作るには、os.mkdir()
とos.makedirs()
という2つの関数を使います。
まずはじめに、os
というPythonの標準ライブラリをインポートしましょう。os
ライブラリを使って、ディレクトリの作成や操作ができます。
# osをインポートする
import os
新しいディレクトリを作成する(mkdir)
os.mkdir()
関数を使って、指定したパスに新しいディレクトリを作成することができます。
以下の例では、sample_directory
という名前のディレクトリを作成しています。
# sample_directoryというフォルダを作成する
directory_path = "sample_directory"
os.mkdir(directory_path)
os.mkdir()
関数には、以下の引数があります。
path
: 作成するディレクトリのパスを指定します。mode
(オプション): ディレクトリのパーミッションを設定します。デフォルトは0o777ですが、umaskの設定によって実際のパーミッションが変わります。
複数階層のディレクトリをまとめて作成する(makedirs)
os.makedirs()
関数を使うと、ネストしたディレクトリ(親ディレクトリとその中の子ディレクトリ)を一度に作成できます。以下の例では、parent_directory
の中にchild_directory
を作成しています。
# parent_directoryとchild_directoryをまとめて作成する
nested_directory_path = "parent_directory/child_directory"
os.makedirs(nested_directory_path)
os.makedirs()
関数には、以下の引数があります。
name
: 作成するディレクトリのパスを指定します。mode
(オプション): ディレクトリのパーミッションを設定します。デフォルトは0o777ですが、umaskの設定によって実際のパーミッションが変わります。exist_ok
(オプション): 既に存在するディレクトリをエラーとして扱わないようにする場合は、exist_ok=True
を指定します。デフォルトはFalse
です。
mkdirとmakedirs関数のFileExistsErrorとFileNotFoundErrorについて
os.mkdir()
とos.makedirs()
関数を使用する際、2つのエラーが発生する可能性があります。それらは、FileExistsError
とFileNotFoundError
です。それぞれのエラーについて説明し、回避方法や注意点も解説します。
FileExistsError
FileExistsError
は、指定したパスにすでにディレクトリ(またはファイル)が存在する場合に発生します。これを回避するには、ディレクトリが存在するかどうかをチェックし、存在しない場合にのみディレクトリを作成するようにしましょう。
以下の例では、os.path.exists()
関数を使ってディレクトリの存在を確認しています。
# フォルダが存在しない場合だけフォルダを作成
directory_path = "sample_directory"
if not os.path.exists(directory_path):
os.mkdir(directory_path)
また、os.makedirs()
関数のexist_ok
引数をTrue
に設定することで、既存のディレクトリがある場合でもエラーが発生しないようにすることができます。
# 既存のディレクトリがあってもFileExistsErrorを出さないようにする
nested_directory_path = "parent_directory/child_directory"
os.makedirs(nested_directory_path, exist_ok=True)
FileNotFoundError
FileNotFoundError
は、os.mkdir()
関数を使った際に、指定したパスに親ディレクトリが存在しない場合に発生します。これを回避するには、os.makedirs()
関数を使って、必要な親ディレクトリも含めて一度に作成することができます。
# まだ存在していないフォルダも含めて作成する
nested_directory_path = "parent_directory/child_directory"
os.makedirs(nested_directory_path)
FileExistsError
とFileNotFoundError
は、ディレクトリ作成の前にディレクトリの存在をチェックすることで回避できます。ただし、マルチスレッドやマルチプロセスの環境では、ディレクトリの存在チェックとディレクトリの作成の間で競合状態が発生する可能性があるため、適切なロックや同期処理が必要です。