環境
- Windows 10
- Python 3.10.1
結論
osモジュールのmakedirsメソッドを使用する
前提
作成するフォルダの構成
test
└a
└b
└c
└ c-1
実装
呼び出し側
- 作成したいディレクトリ名のリストと、作成するディレクトリの共通パスを宣言
- 自作のフォルダオブジェクトを生成し、それをMakeFolderServiceに渡す
tests\test_make_folder_service.py
import os
from shared.Application.make_folder_service import MakeFolderService
from shared.Domain.xfolder import XFolder
def test_任意のフォルダを作成できること():
making_folder_list = ["a", "b", "c\\c-1"]
base_path = "C:\\Users\\nishigaki\\Desktop\\test\\"
for folder in making_folder_list:
x_folder = XFolder(base_path=base_path, folder_name=folder)
MakeFolderService().execute(x_folder)
assert os.path.exists(base_path + folder) == True
shared\Application\make_folder_service.py
- 中間ディレクトリがない場合はエラーにならず、そのディレクトリを作成してくれる
- 中間ディレクトリは、今回の例でいうと、"c"というディレクトリ(cが存在しなくても、勝手に作成してその次階層のc-1というディレクトリを作成してくれる)
- os.mkdirというメソッドもあるが、こちらは中間ディレクトリが存在しない場合、エラーになる
- さらに、作成するフォルダがすでに存在していてもエラーを出したくない場合は、os.makedirsの第二引数に引数にexist_okを指定することで、存在していれば作成しないとよしなにしてくれる
import os
from shared.Domain.xfolder import XFolder
class MakeFolderService:
def execute(self, xfolder: XFolder):
os.makedirs(xfolder.get_folder_path(), exist_ok=True)
以上です
まとめ
いかがでしたでしょうか。本記事では、Pythonで任意のディレクトリを一括作成する方法について紹介しています。ぜひ参考にしてみてください