Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでディレクトリを作成する方法:os.mkdir()とos.makedirs()の使い方ガイド

Pythonのos.mkdir()メソッドは、ファイルシステム上に空のディレクトリを作成します。ただし、このメソッドでは存在しないフォルダの中に新しいフォルダを作成することはできません。存在しない親フォルダもまとめて作成したい場合は、os.makedirs()メソッドを使うことで、再帰的にディレクトリを作成できます。

ファイルを使えば、プログラムの外部にデータを保存し、後からプログラムから参照することができます。ファイルを扱っていると、保存先として新しいディレクトリを作成したくなる場面があるでしょう。

そんなときに役立つのがPythonのosモジュールです。osモジュールには、ディレクトリを作成するためのos.mkdir()os.makedirs()という2つのメソッドが用意されています。

本記事では、これら2つのメソッドを使ってPythonでディレクトリを作成する方法を詳しく解説します。実際のコード例も交えながら、それぞれの動作を確認していきましょう。

Python osモジュールのおさらい

Pythonでファイルを操作するには、まずosモジュールをインポートする必要があります。osモジュールはPythonに標準で組み込まれており、コンピュータの基盤となるオペレーティングシステムとやり取りするためのさまざまなメソッドが含まれています。

ここで注目するのは、osモジュールが提供するファイルシステム関連のメソッドです。import文を使って、次のようにosモジュールをプログラムに読み込みます。

import os

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

os.mkdir()メソッドは、単一のディレクトリを作成するために使います。たとえば、プログラムの出力結果を保存するための新しいフォルダが必要な場合などに、このメソッドを活用できます。

os.mkdir()メソッドの構文は以下のとおりです。

os.mkdir(path, access)

os.mkdir()関数は、次の2つの引数を受け取ります。

  • path:ディレクトリを作成したいファイルパス(必須)
  • access:ディレクトリに付与したいアクセス権限(任意)

os.mkdir()の使用例

具体的な例を使って、os.mkdir()メソッドの使い方を見ていきましょう。

ここでは、数学の生徒のテスト点数リストを分析するプログラムを作成するとします。このプログラムは、各生徒が最新のテストに合格したかどうかを記録します。

まず、データを保存するための専用ディレクトリを作成します。こうすることで、データをプログラムの他の部分と分けて整理された状態で管理できます。

データ用のディレクトリを作成するコードは、次のようになります。

import os

path = "/home/school/math/grades/final"

os.mkdir(path)

print("/home/school/math/grades/final has been created.")

このコードを実行すると、OS上の/home/school/math/gradesフォルダ内にfinalという名前の新しいディレクトリが作成され、次のメッセージが出力されます。

/home/school/math/grades/final has been created.

なお、mkdir()メソッドは一度に1つのディレクトリしか作成できません。つまり、finalフォルダを作成してから、その中にjan2020というフォルダを新規作成する、といったことはできません。親フォルダがすでに存在していない場合、FileNotFoundErrorが発生する点にも注意してください。

os.mkdir()でアクセス権限を指定する例

省略可能なaccess引数を使うと、ディレクトリに設定する権限を指定できます。デフォルトでは、mkdir()が作成するディレクトリのアクセス権限は777です。これは、所有者およびすべてのユーザーが読み書きできることを意味します。

では、独自の権限を設定したい場合はどうすればよいのでしょうか。

たとえば、OSが複数の教師によって共有されており、書き込み権限は所有者だけに与えたいとしましょう。この場合は755の権限を使用します。755は「すべてのユーザーがファイルを読み取り・アクセスできるが、書き込めるのは所有者のみ」という権限設定です。

カスタム権限を持つ作業用ディレクトリを作成するコードは、次のようになります。

import os

path = "/home/school/math/grades/final"
access = 0o755

os.mkdir(path, access)

print("/home/school/math/grades/final has been created.")

このコードでは、/home/school/math/grades/finalというディレクトリを作成し、アクセス権限755を設定しています。これにより、すべてのユーザーがファイルを読み取れる一方で、書き込みできるのは所有者だけになります。プログラムは最後に次のメッセージを出力します。

/home/school/math/grades/final has been created.

重要なポイントとして、コード内のaccess変数には0o755を代入しています。アクセス権限は8進数で表現されるため、access引数の値には必ず0oというプレフィックスを付ける必要があります。

なお、ファイルやディレクトリが存在するかどうかを事前に確認しておくと、意図しないエラーを防ぐことができます。存在チェックにはos.path.exists()を使うのが一般的です。

Pythonで複数階層のディレクトリを作成する(os.makedirs())

Pythonのos.makedirs()メソッドは、フォルダを再帰的に作成します。このメソッドを使えば、まだ存在しないフォルダの中に新しいフォルダを作成することも可能です。os.makedirs()は、作成したいフォルダのパスを引数として受け取ります。

os.makedirs()の構文は以下のとおりです。

os.makedirs(path, access)

このメソッドは、os.mkdir()と同じ引数を受け取ります。

os.makedirs()の使用例

新しく作成した別のディレクトリの中に、さらにディレクトリを作成しなければならないケースはよくあります。

たとえば、数学の生徒のテスト点数データを保存するプログラムを作成しているとしましょう。すべてのデータを1つのフォルダに入れるのではなく、複数のフォルダに分けて保存することもできます。

各フォルダをテストの年月に対応させておけば、後からデータを参照したいときに目的のファイルを見つけやすくなります。

それでは、学校の数学テストの例を使って、os.makedirs()メソッドの動作を確認してみましょう。

プログラムの仕様が変更され、テストの年と月ごとにフォルダを分けてデータを保存することになりました。このタスクは、次のようなコードで実現できます。

import os

path = "/home/school/math/grades/2020/02"
access = 0o755

os.makedirs(path, access)

print("/home/school/math/grades/2020/02 has been created.")

仮に2020フォルダも02フォルダもまだ存在していなかった場合でも、このコードはまず2020フォルダを作成し、続いてその中に02というフォルダを作成します。作成されたフォルダには、アクセス権限755が設定されます。

プログラムがフォルダを作成すると、次のメッセージが出力されます。

/home/school/math/grades/2020/02 has been created.

まとめ

ファイルを扱う際、ディレクトリの作成はPythonで非常によく行われる操作のひとつです。os.mkdir()メソッドは単一のディレクトリを作成するために、os.makedirs()メソッドは多階層のディレクトリを一括で作成するために使用できます。

本記事では、os.mkdir()os.makedirs()の両方を使ってPythonでフォルダを作成する方法を解説し、それぞれの実際の動作例も紹介しました。用途に応じて2つのメソッドを使い分けることで、ファイル管理をより効率的に行えるようになります。ぜひ自分のプロジェクトでも活用してみてください。

  1. Pythonでswitch文を実現する方法:辞書とget()メソッドを使った実装ガイド

    JavaやC#とは異なり、Pythonには組み込みのswitch文が存在しません。そのため、「switch…case」のような条件分岐を実現したい場合は、自分でコードを書いて同等の動作を再現する必要があります。 この記事では、Pythonで「switch…case」に相当する処理を書く方法を解説し、実際に動作するサンプルコードを2つ紹介します。記事を読み終える頃には、あなたのコードにも自信を持って疑似switch文を組み込めるようになっているでしょう。 switch文のおさらい switch文とは、複数のコードブロックの中から1つを選択して実行するための構文です。プログラム内で複数の条件式を評

  2. PythonでHello Worldを表示する方法:初心者向けステップバイステップガイド

    Pythonの「Hello World」プログラムは、多くのプログラマーが最初に書くプログラムです。print文を使って文字列をコンソールに表示するだけのシンプルなもので、コードは print(Hello World) の1行のみです。 Pythonが正しくインストールされているかを確認するには、まず「Hello World」を書いてみるのがおすすめです。作成方法は主に2つあります。ターミナル(コマンドライン)を使う方法と、Visual Studio CodeやVimなどのコードエディタを使う方法です。 始める前に、お使いのマシンにPython 3がインストールされていることを確認しておき