Pythonで複数のフォルダを作成する方法【os.mkdir, os.makedirs】

464, 2022-05-03

目次

Pythonで複数のフォルダを作成する

Pythonではosモジュールにある関数(mkdir, makedirsなど)を使うとフォルダ(ディレクトリ)を作成することができます。
フォルダの作成でよく行われるのが複数のフォルダを作成することです。

今回はPythonで複数のフォルダを作成するという点に注目して、これらの関数の使い方を解説していきます。

関連記事
Pythonのリストにデータを追加(append)する方法【extend, insert, スライス】
Pythonでbytes型をstr型に(byte to string)変換する
Pythonのリストのappend()の使い方【初心者向け完全解説】

mkdirで複数のフォルダを作成する

os.mkdir()でフォルダを作成できます。
しかしこの関数は標準で複数のフォルダの作成に対応していません。

そのためos.mkdir()で複数のフォルダを作成したい場合は、os.mkdir()を複数回呼び出す必要があります。

リスト内のファイル名をmkdirで作成する

ここではリストにフォルダ名を複数定義して、そのフォルダ名のフォルダをos.mkdir()で作成してみたいと思います。
その場合は↓のようにコードを書きます。

import os

folder_names = ['folder0', 'folder1', 'folder2']

for folder_name in folder_names:
    os.mkdir(folder_name)

このコードを実行すると現在のディレクトリ以下にフォルダーが複数作成されます。

$ ls
folder0
folder1
folder2

for文でフォルダ名を作成し、mkdirでフォルダを作成する

あるいは自動化してfor文でフォルダ名を作成する場合もあります。
その場合はfor文で得られたカウント変数をフォルダ名に採用します。

↓のようなコードを書きます。

import os

for i in range(4):
    folder_name = f'myfolder{i}'
    os.mkdir(folder_name)
$ ls
myfolder0
myfolder1
myfolder2
myfolder3

uuidでランダムで一意な名前のフォルダを作成する

Pythonの標準にあるuuidというすばらしいモジュールを使うと、一意の名前を生成することができます。
たとえばuuidの出力は↓のようになります。

import uuid

print(uuid.uuid4())
cba87147-434c-41a8-9fe2-33deb3a2689a

このuuid.uuid4()が生成する識別子は一意でランダムです。
これを使えば適当な名前のフォルダを複数作成することもできます。

たとえばfor文を使いましょう。

import uuid
import os

for _ in range(4):
    folder_name = str(uuid.uuid4())
    os.mkdir(folder_name)
$ ls
000bbb11-c1f1-44ee-b643-ca11c9840d5f
90eb4d97-2a26-4ed3-ae30-8713b6c39e82
af726b65-b5b7-4cfd-acd8-5ed19e752261
9de6fe81-c7b1-4def-a105-3172c64e8998

↑のように適当な名前のフォルダが一気に作成できます。

os.makedirsで階層のあるフォルダを作成する

os.makedirs()はパスの途中の階層にあるフォルダも一気に作成できます。
つまりこれを使えば複数のフォルダが入れ子になっている場合に便利です。

↓のように使います。

import os

path = 'parent/child/folder'

os.makedirs(path)

↑の場合、パスに含まれているparentchildfolderもフォルダーです。
このようなパスをmakedirsに渡すと再帰的にフォルダ階層を作成してくれます。

$ ls -R
./parent:
child

./parent/child:
folder

./parent/child/folder:

os.makedirsは同じパスを2回渡すと例外が飛んできてエラーになります。
これはos.makedirsがすでに存在するフォルダを作成できないからです。

path = 'sudeni/sonzai/suruyo'
os.makedirs(path)

try:
    os.makedirs(path)
except FileExistsError as e:
    print(e)
    # [Errno 17] File exists: 'sudeni/sonzai/suruyo'

exist_okフラグをTrueにしておくとこのようなエラーは飛んでこなくなります。

os.makedirs(path, exist_ok=True)

おわりに

今回はPythonで複数のフォルダを作成する方法について解説しました。
フォルダを作成したり削除したりできるようになっておくと、プログラムの設計もはかどるかと思います。
ホームフォルダに設定ファイルを作ったりするときとかですね。

(^ _ ^)

複数のフォルダをデプロイ(配置)

(・ v ・)

ターン終了だ

この記事のアンケートを送信する