Pythonで複数のフォルダを作成する方法【os.mkdir, os.makedirs】
- 作成日: 2022-05-02
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonで複数のフォルダを作成する
Pythonではos
モジュールにある関数(mkdir
, makedirs
など)を使うとフォルダ(ディレクトリ)を作成することができます。
フォルダの作成でよく行われるのが複数のフォルダを作成することです。
今回はPythonで複数のフォルダを作成するという点に注目して、これらの関数の使い方を解説していきます。
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
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)
↑の場合、パスに含まれているparent
もchild
もfolder
もフォルダーです。
このようなパスを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で複数のフォルダを作成する方法について解説しました。
フォルダを作成したり削除したりできるようになっておくと、プログラムの設計もはかどるかと思います。
ホームフォルダに設定ファイルを作ったりするときとかですね。
🦝 < 複数のフォルダをデプロイ(配置)
🐭 < ターン終了だ